HDFS的架構(gòu)及寫入流程。

      網(wǎng)友投稿 931 2025-03-31

      HDFS是Hadoop的組件之一,是一個分布式文件系統(tǒng), 文件系統(tǒng)是一個抽象類,其中有很多的子實現(xiàn)類,例如:hdfs,file:\(本地磁盤),ftp文件系統(tǒng),webHdfs(可通過瀏覽器的界面進行文件操作).


      1架構(gòu)圖

      (1)HDFSClient:客戶端想要請求數(shù)據(jù),首先對NameNode進行"詢問",NameNode會將數(shù)據(jù)的存儲信息返回給用戶.

      (2) NameNode :保存HDFS元數(shù)據(jù)的信息(存儲在內(nèi)存中,磁盤),負責(zé)管理文件系統(tǒng)的名字空間(namespace)以及客戶端對文件的訪問.

      (3)Secondary NameNode:主機元數(shù)據(jù)的輔助管理

      (4) DateNode:存儲數(shù)據(jù)

      (5) Heartbeats: NameNode和DateNode之間存在心跳機制.DateNode會定期向NameNode報告自己是否還"活著".NameNode全權(quán)管理數(shù)據(jù)庫的復(fù)制,它周期性的從集群中的每個DataNode接收心跳信合和狀態(tài)報告,接收到心跳信號意味著DataNode節(jié)點工作正常,塊狀態(tài)報告包含了一個該DataNode上所有的數(shù)據(jù)列表.

      (6) Blancing:負載均衡

      (7) Replication:副本機制,副本存放在哪些Datanode上由NameNode來控制,根據(jù)全局情況作出塊放置決定,讀取文件時NameNode盡量讓用戶先讀取最近的副本,降低讀取網(wǎng)絡(luò)開銷和讀取延時.默認(rèn)設(shè)置3個副本

      2.HDFS的block塊存儲

      HDFS數(shù)據(jù)塊:HDFS上的文件被劃分為塊大小的多個分塊,作為獨立的 存儲單元,稱為數(shù)據(jù)塊,在hadoop1當(dāng)中,文件的block塊默認(rèn)大小是64M,hadoop2當(dāng)中,文件的block塊大小默認(rèn)是128M,block塊的大小可以通過hdfs-site.xml當(dāng)中的配置文件進行指定.

      2.1 抽象塊好處:

      (1)一個文件的大小可以大于集群任意節(jié)點磁盤的容量

      (2)容易對數(shù)據(jù)進行備份,提高容錯能力

      HDFS的架構(gòu)及寫入流程。

      (3)使用抽象塊概念而非整個文件作為存儲單元,大大簡化存儲子系統(tǒng)的設(shè)計

      2.2 塊緩存

      將block塊存儲到內(nèi)存中,在執(zhí)行一些MR計算時,可以從內(nèi)存中獲取,比較快,比較使用于小表join大表的情況.

      3.HDFS的元數(shù)據(jù)信息管理

      當(dāng)namenode就一個的時候,所有的元數(shù)據(jù)信息都保存在了FsImage與Eidts文件當(dāng)中,這兩個文件就記錄了所有的數(shù)據(jù)的元數(shù)據(jù)信息,元數(shù)據(jù)信息的保存目錄配置在了hdfs-site.xml當(dāng)中.

      3.1 介紹

      (1) FsImage:是namenode中關(guān)于元數(shù)據(jù)的鏡像,一般稱為檢查點。存放的是一份完整的元數(shù)據(jù)信息,內(nèi)容較大.

      (2) Edits:元數(shù)據(jù)操作日志,記錄了一段時間的元數(shù)據(jù)信息變化情況. 隨著edits內(nèi)容增大,就需要在一定時間點和fsimage合并。

      (3) SecondaryNameNode:主要職責(zé)合并edits和fsImage,清空edits.

      3.2 edits和fsImage合并的控制策略:

      SecondaryNameNode定期檢查edits文件,一旦觸發(fā)合并條件(時間長短(fs.checkpoint.period: 默認(rèn)是一個小時(3600s))+文件大小(fs.checkpoint.size: 默認(rèn)64MB))

      1)secondaryNameNode通知NameNode準(zhǔn)備切換edits文件.

      2)NameNode接收到切換通知,所有的操作通知寫入到新的edits文件中.

      3)secondaryNameNode獲取edits和fsImage兩個文件,一次性將兩個文件加載到內(nèi)存中,合并成為新的fsImage.

      4)secondaryNameNode將新的fsImage發(fā)送給NameNode替換掉原有舊的fsImage.

      4.HDFS文件寫入

      詳細步驟:

      1、 client發(fā)起文件上傳請求,通過RPC與NameNode建立通訊,NameNode檢查目標(biāo)文件是否已存在,父目錄是否存在,返回是否可以上傳;

      2、 client請求第一個block該傳輸?shù)侥男〥ataNode服務(wù)器上;

      3、 NameNode根據(jù)配置文件中指定的備份數(shù)量及機架感知原理進行文件分配,返回可用的DataNode的地址如:A,B,C;

      注:Hadoop在設(shè)計時考慮到數(shù)據(jù)的安全與高效,數(shù)據(jù)文件默認(rèn)在HDFS上存放三份,存儲策略為本地一份,同機架內(nèi)其它某一節(jié)點上一份,不同機架的某一節(jié)點上一份。

      4、 client請求3臺DataNode中的一臺A上傳數(shù)據(jù)(本質(zhì)上是一個RPC調(diào)用,建立pipeline),A收到請求會繼續(xù)調(diào)用B,然后B調(diào)用C,將整個pipeline建立完成,后逐級返回client;

      5、 client開始往A上傳第一個block(先從磁盤讀取數(shù)據(jù)放到一個本地內(nèi)存緩存),以packet為單位(默認(rèn)64K),A收到一個packet就會傳給B,B傳給C;A每傳一個packet會放入一個應(yīng)答隊列等待應(yīng)答。

      6、 數(shù)據(jù)被分割成一個個packet數(shù)據(jù)包在pipeline上依次傳輸,在pipeline反方向上,逐個發(fā)送ack(命令正確應(yīng)答),最終由pipeline中第一個DataNode節(jié)點A將pipelineack發(fā)送給client;

      7、 當(dāng)一個block傳輸完成之后,client再次請求NameNode上傳第二個block到服務(wù)器

      5.HDFS文件讀取

      讀取時可以通過多線程的方式去讀取block塊,提高讀取的效率.

      詳細步驟:

      1、 Client向NameNode發(fā)起RPC請求,來確定請求文件block所在的位置;

      2、 NameNode會視情況返回文件的部分或者全部block列表,對于每個block,NameNode 都會返回含有該 block 副本的 DataNode 地址; 這些返回的 DN 地址,會按照集群拓撲結(jié)構(gòu)得出 DataNode 與客戶端的距離,然后進行排序,排序兩個規(guī)則:網(wǎng)絡(luò)拓撲結(jié)構(gòu)中距離 Client 近的排靠前;心跳機制中超時匯報的 DN 狀態(tài)為 STALE,這樣的排靠后;

      3、 Client 選取排序靠前的 DataNode 來讀取 block,如果客戶端本身就是DataNode,那么將從本地直接獲取數(shù)據(jù)(短路讀取特性);

      4、 底層上本質(zhì)是建立 Socket Stream(FSDataInputStream),重復(fù)的調(diào)用父類 DataInputStream 的 read 方法,直到這個塊上的數(shù)據(jù)讀取完畢;

      5、 當(dāng)讀完列表的 block 后,若文件讀取還沒有結(jié)束,客戶端會繼續(xù)向NameNode 獲取下一批的 block 列表;

      6、 讀取完一個 block 都會進行 checksum 驗證,如果讀取 DataNode 時出現(xiàn)錯誤,客戶端會通知 NameNode,然后再從下一個擁有該 block 副本的DataNode 繼續(xù)讀。

      7、 read 方法是并行的讀取 block 信息,不是一塊一塊的讀取;NameNode 只是返回Client請求包含塊的DataNode地址,并不是返回請求塊的數(shù)據(jù);

      8、 最終讀取來所有的 block 會合并成一個完整的最終文件。

      緩存 Hadoop 存儲

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:Word長文檔編輯,論文排版必殺技(長篇word編輯技巧)
      下一篇:如何去掉紅色波浪線(wps如何去掉紅色波浪線)
      相關(guān)文章
      亚洲日韩精品A∨片无码加勒比| 亚洲乱码一二三四区乱码| 伊人久久亚洲综合影院首页| 亚洲男人的天堂在线| 久久精品国产亚洲AV大全| 久久亚洲AV无码精品色午夜麻| 一本久久a久久精品亚洲| 亚洲中文字幕无码永久在线| 亚洲综合久久夜AV | 国产成人精品日本亚洲专区61| 亚洲色一色噜一噜噜噜| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 国产精品久久久亚洲| 国产亚洲人成网站观看| 亚洲国产精品无码专区| 亚洲av无码乱码国产精品| 久久久综合亚洲色一区二区三区 | 久久九九亚洲精品| 亚洲AV无码乱码国产麻豆穿越| 亚洲ⅴ国产v天堂a无码二区| 亚洲国产人成在线观看69网站| 亚洲国产精品第一区二区| 亚洲黄色免费网址| 亚洲人和日本人jizz| 亚洲国产精品一区二区三区在线观看| 亚洲欧洲另类春色校园网站| 国产亚洲精aa在线看| 亚洲av成本人无码网站| 亚洲成AⅤ人影院在线观看| 国产亚洲精品成人AA片新蒲金| 国产成人无码综合亚洲日韩| 亚洲国产老鸭窝一区二区三区 | 亚洲av无码成人精品区在线播放| 亚洲日韩在线观看| 亚洲日韩精品A∨片无码| 亚洲av色福利天堂| 亚洲成a人片在线观| 亚洲熟女精品中文字幕| 国产精品日本亚洲777| 亚洲午夜国产精品无码老牛影视| 亚洲久本草在线中文字幕|