日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hadoop--HDFS的读写数据流程

發(fā)布時間:2025/3/17 编程问答 11 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hadoop--HDFS的读写数据流程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

  • HDFS中block、packet、chunk的概念
    • 1. 數(shù)據(jù)塊block
    • 2. packet
    • 3. chunk
  • HDFS讀數(shù)據(jù)流程
  • HDFS寫數(shù)據(jù)流程

HDFS中block、packet、chunk的概念

1. 數(shù)據(jù)塊block

每個磁盤都有默認的數(shù)據(jù)塊大小,這是磁盤進行數(shù)據(jù)讀寫的最小單位。
HDFS也有塊(block)的概念,但是大得多,默認128MB,與單一磁盤上的文件系統(tǒng)相似,HDFS上的文件也被劃分為塊大小的多個分塊(chunk),作為獨立的存儲單元。
但與面向單一磁盤的文件系統(tǒng)不同的是,HDFS中小于一個塊大小的文件不會占據(jù)整個塊的空間(如一個文件只有1MB存儲在128MB的塊中,文件只使用1MB的磁盤空間,而不是128MB)。

2. packet

client向datanode傳輸數(shù)據(jù)的最小單位稱為packet (64k=512 byte +4 byte);

3. chunk

chunk是最小單位,默認為512byte,加上4byte的校驗位chunksum;
HDFSClient創(chuàng)建FSDataInputStream/FSDataOutputStream流時會產(chǎn)生緩沖隊列,存儲512byte的chunk加4byte的校驗位chunksum;

chunk–>Packet–>block

HDFS讀數(shù)據(jù)流程

  • client通過創(chuàng)建Distributed FileSystem對象訪問namenode,請求訪問文件;
  • namenode判斷是否具有權(quán)限以及集群是否存在目標文件,若具備條件,返回目標文件的元數(shù)據(jù);
  • client通過創(chuàng)建FSDataInputStream流向dn1(節(jié)點距離最近原則)請求讀取數(shù)據(jù)block1,
  • datanode1向client端傳輸數(shù)據(jù);
  • client向dn2請求讀取數(shù)據(jù)block2(負載能力原則);
  • dn2向client端傳輸數(shù)據(jù);
  • tips: 通過串行讀取數(shù)據(jù),先讀block1,再讀block2追加在block1后面。

    HDFS寫數(shù)據(jù)流程


    數(shù)據(jù)流–>chunk(512+4)–>Packet–>緩沖隊列–>發(fā)送–>應(yīng)答–>ack隊列;
    ack隊列在發(fā)送時會存儲一份緩沖數(shù)據(jù),只有應(yīng)答成功之后,緩沖隊列才會刪除;

  • 客戶端通過創(chuàng)建Distributed FileSystem向namenode發(fā)送消息請求上傳文件;
  • namenode會檢查該客戶端是否具有權(quán)限,以及目標目錄是否存在;然后響應(yīng)客戶端是否可以上傳;
  • 客戶端切分文件,請求上傳第一個block(0-128MB)到哪些datenode服務(wù)器;
  • namenode返回dn1,dn2,dn3節(jié)點,表示這三個節(jié)點可以用來存儲數(shù)據(jù);
  • 客戶端通過FSDataOutputStream模塊請求與dn1(節(jié)點距離最近)建立傳輸通道,dn1收到請求繼續(xù)調(diào)用dn2(負載均衡),dn2調(diào)用dn3,建立起通信管道;
  • dn1,dn2,dn3逐級應(yīng)答客戶端;
  • 客戶端以packet (64k)為單位開始向dn1傳輸?shù)谝粋€block,dn1收到一個packet后就會傳給dn2,dn2收到傳給dn3;dn1每上傳一個packet就會放入ack應(yīng)答隊列等待,只有應(yīng)答成功后,這個緩沖數(shù)據(jù)才會被刪除;
  • 當一個block傳輸完成后,客戶端再次請求namenode上傳第二個block的服務(wù)器;重復(fù)3-7;
  • tips:
    client端向dn1上傳數(shù)據(jù),上傳成功后會有2份數(shù)據(jù),其中1份寫入磁盤,另一份存在內(nèi)存中直接傳給dn2。

    作業(yè)提交全過程(HDFS & YARN & MapReduce==>)

    總結(jié)

    以上是生活随笔為你收集整理的hadoop--HDFS的读写数据流程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。