HDFS讀寫兩步教程
一 、 HDFS讀寫 之 前提
NameNode(後設資料節點) :存放後設資料(名稱空間、副本數、許可權、塊列表、叢集配置資訊),不包含資料節點。後設資料節點將檔案系統後設資料儲存在記憶體中。
1. DataNode(資料節點) :真正儲存資料的地方,以資料塊為單位。預設資料塊大小為128M。資料節點週期性的將所有儲存塊資訊傳送給後設資料節點。客戶端透過和NameNode節點溝通後,再向資料節點對資料讀出或寫入。
2. SecondaryNameNode(從後設資料節點) :並不是後設資料節點的備用節點,而是配合 後設資料節點工作,與後設資料節點有不同的工作。 SecondaryNameNode週期性地將後設資料節點的名稱空間映象檔案和修改日誌合併,幫助後設資料節點將記憶體中後設資料資訊儲存到磁碟上。
3. Client(客戶端) :客戶端就是需要獲取 HDFS系統中檔案的應用程式和介面,引發HDFS的讀/寫等操作。
值得注意的是:
1.namenode實際客戶端只上傳一個datanode,其餘兩個是namenode完成的。讓datenote自己複製的。然後複製完成以後逐級返回結果給namenode 。 如果 2,3datanode複製失敗,再有namenode分配新的datanode地址。對於客戶端來說預設上傳一個datanode就可以了,其餘的由datanode自己複製。
2.datanode切片是由客戶端完成的。datanode第二三個副本的上傳和第一個上傳是非同步的。
二 、 HDFS 中的寫流程:
1.根namenode通訊請求上傳檔案,namenode檢查目標檔案是否已存在,父目錄是否存在。
2. namenode返回是否可以上傳。
3. client請求第一個 block該傳輸到哪些datanode伺服器上。
4. namenode返回3個datanode伺服器ABC。
5. client請求3臺dn中的一臺A上傳資料(本質上是一個RPC呼叫,建立pipeline),A收到請求會繼續呼叫B,然後B呼叫C,將真個pipeline建立完成,逐級返回客戶端。
6. client開始往A上傳第一個block(先從磁碟讀取資料放到一個本地記憶體快取),以packet為單位,A收到一個packet就會傳給B,B傳給C;A每傳一個packet會放入一個應答佇列等待應答。
7.當一個block傳輸完成之後,client再次請求namenode上傳第二個block的伺服器 。
三 、 hdfs中的讀流程:
1.跟namenode通訊查詢後設資料,找到檔案塊所在的datanode伺服器。
2.挑選一臺datanode(就近原則,然後隨機)伺服器,請求建立socket流。
3. datanode開始傳送資料。(從磁碟裡面讀取資料放入流,以packet為單位來做校驗)
4. 客戶端以 packet為單位接收,先在本地快取,然後寫入目標檔案 。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913892/viewspace-2644960/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- HDFS的讀寫流程
- HDFS讀寫流程(重點)
- hadoop實戰4--(hdfs讀流程,hdfs寫流程,副本放置策略)Hadoop
- Hadoop之HDFS檔案讀寫流程說明Hadoop
- 大資料系列2:Hdfs的讀寫操作大資料
- HDFS 03 - 你能說說 HDFS 的寫入和讀取過程嗎?
- Logstash讀取Kafka資料寫入HDFS詳解Kafka
- Hadoop框架:HDFS讀寫機制與API詳解Hadoop框架API
- HDFS寫過程分析
- HDFS短路讀詳解
- 教程:使用DataLakeAnalytics讀/寫RDS資料
- aardio 兩行程式碼 呼叫 libxl 讀寫 excel行程Excel
- 從HDFS的寫入和讀取中,我發現了點東西
- Mysql增量寫入Hdfs(二) --Storm+hdfs的流式處理MySqlORM
- 分散式 | 幾步快速擁有讀寫分離分散式
- Hadoop hdfs完全分散式搭建教程Hadoop分散式
- HDFS原始碼解析:教你用HDFS客戶端寫資料原始碼客戶端
- Python 簡明教程 --- 24,Python 檔案讀寫Python
- Spark core 寫程式 指定 本地或者hdfsSpark
- hbase對HDFS開啟短路讀功能
- 往hdfs寫資料無許可權
- 物聯網學習教程—檔案的讀寫二
- 物聯網學習教程—檔案的讀寫一
- (Python基礎教程之十二)Python讀寫CSV檔案Python
- Python入門教程之檔案讀寫操作知識Python
- Mysql增量寫入Hdfs(一) --將Mysql資料寫入Kafka TopicMySqlKafka
- 原始碼|HDFS之DataNode:寫資料塊(2)原始碼
- 讀寫
- 利用訊號量semaphore實現兩個程式讀寫同步 Linux CLinux
- 【教程搬運】分析並編寫suricata規則(內含兩個示例)
- spark讀取hdfs資料本地性異常Spark
- discuz 配置讀寫分離(主寫從讀)
- 一步一步手寫GPTGPT
- M1晶片版mac輕鬆讀寫NTFS格式磁碟教程晶片Mac
- leapftp教程,掌握leapftp教程只需6步FTP
- 讀寫鎖
- POI讀寫
- java通過kerberos認證連線hdfs並寫數JavaROS