HDFS寫入和讀取中,我們能學習到什么

      網友投稿 1055 2025-04-01

      最近開發過程涉及了一些和文件讀取有關的問題,于是對hdfs的讀取機制感到興趣,順便深入學習了1下。

      寫入

      客戶端向NameNode發出寫文件請求,告訴需要寫的文件名和路徑、用戶

      NameNode檢查是否已存在文件、檢查權限。如果通過,會返回一個輸出流對象

      注意此時會按照“日志先行“原則,寫入NameNode的editLog

      客戶端按照128MB的大小切分文件。 也就是block大小

      客戶端把nameNode傳來的DataNode列表和Data數據一同發送給 最近的第一個DataNode節點。

      第一個dataNode節點收到數據和DataNode列表時, 會先根據列表,找到下一個自己要連接的最近DataNode, 刪除自己后,再一樣往下發。以此類推,發完3臺或者N臺。

      傳輸單位是packet,包,比block小一點。

      從HDFS的寫入和讀取中,我們能學習到什么

      dataNode每寫完一個block塊, 則返回ACK信息給上一個節點進行確認。(注意是寫完block才確認)

      寫完數據, 關閉輸出流, 發送完成信息給DataNode

      寫過程的核心總結:

      客戶端只向一個dataNode寫數據,然后下一個dataNode接著往另一個dataNode寫,串聯起來。

      按128MB分block。 每次傳數據按pack傳。 校驗按照chunk 校驗,每次chunk都會寫入pack。

      寫完block才發ACK確認。

      Q: NameNode的editlog有什么用?怎么起作用的?

      A:

      作用:

      硬盤中需要有一份元數據的鏡像——FSImage

      每次要修改元數據就信息時,必須得改文件(hdfs沒有數據庫)

      可能會比較久,改的時候如果斷電了,就丟失這個操作了

      為了避免丟失,引入editlog,每次修改元數據前,先追加方式寫入editlog, 然后再處理,這樣即使斷電了也能修復。

      一般都是那些更改操作有斷開風險,為了確保能恢復,都會引入這類操作。

      Q: 什么時候發送完成信號? 全部節點都寫入完成嗎

      A:

      發送完成信號的時機取決于集群是強一致性還是最終一致性,強一致性則需要所有DataNode寫完后才向NameNode匯報。最終一致性則其中任意一個DataNode寫完后就能單獨向NameNode匯報,HDFS一般情況下都是強調強一致性

      Q: 怎么驗證寫入時的數據完整性?

      A:

      因為每個chunk中都有一個校驗位,一個個chunk構成packet,一個個packet最終形成block,故可在block上求校驗和。

      當客戶端創建一個新的HDFS文件時候,分塊后會計算這個文件每個數據塊的校驗和,此校驗和會以一個隱藏文件形式保存在同一個 HDFS 命名空間下。就是.meta文件

      當client端從HDFS中讀取文件內容后,它會檢查分塊時候計算出的校驗和(隱藏文件里)和讀取到的文件塊中校驗和是否匹配,如果不匹配,客戶端可以選擇從其他 Datanode 獲取該數據塊的副本。

      Q: 寫入時怎么確定最近節點?

      A:

      按照按照hadoop時設置的機架、數據中心、節點來估算

      假設有數據中心d1機架r1中的節點n1。該節點可以表示為/d1/r1/n1。利用這種標記,這里給出四種距離描述。

      Distance(/d1/r1/n1, /d1/r1/n1)=0(同一節點上的進程)

      Distance(/d1/r1/n1, /d1/r1/n2)=2(同一機架上的不同節點)

      Distance(/d1/r1/n1, /d1/r3/n2)=4(同一數據中心不同機架上的節點)

      Distance(/d1/r1/n1, /d2/r4/n2)=6(不同數據中心的節點)

      讀取

      讀取就比較簡單了,沒有那種復雜的串行過程。NameNode直接告訴客戶端去哪讀就行了。

      client訪問NameNode,查詢元數據信息,獲得這個文件的數據塊位置列表,返回輸入流對象。

      就近挑選一臺datanode服務器,請求建立輸入流 。

      DataNode向輸入流中中寫數據,以packet為單位來校驗。

      關閉輸入流

      Java 可信智能計算服務 TICS 大數據 數據庫 智能數據

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:愛立信:依托運營商5G網絡建設5G行業專網的重要性和緊迫性
      下一篇:單獨調整Word文檔中表格列寬的方法(word里調整表格列寬)
      相關文章
      久久精品国产亚洲精品| 久久久久久a亚洲欧洲AV| 久久精品国产亚洲AV网站| 亚洲AV成人无码网站| 亚洲视频在线观看2018| 亚洲二区在线视频| 久久狠狠爱亚洲综合影院| 亚洲综合精品香蕉久久网97| 久久久久久亚洲精品中文字幕| 亚洲av无码不卡一区二区三区 | 456亚洲人成影院在线观| 亚洲免费中文字幕| wwwxxx亚洲| www.亚洲日本| 亚洲国产精品美女久久久久| 蜜芽亚洲av无码一区二区三区| gogo全球高清大胆亚洲| 亚洲av无码国产精品色在线看不卡| 精品亚洲福利一区二区| 爱情岛亚洲论坛在线观看| 一本久久综合亚洲鲁鲁五月天| 亚洲?v女人的天堂在线观看| 亚洲国产成人久久综合一区77| 亚洲精品国产高清嫩草影院| 亚洲中文无韩国r级电影| 亚洲尤码不卡AV麻豆| 亚洲精品无码永久中文字幕| 亚洲国产另类久久久精品| 久久亚洲伊人中字综合精品| 久久99亚洲网美利坚合众国| 亚洲成人黄色在线观看| 2019亚洲午夜无码天堂| 亚洲欧美日韩中文高清www777| 国产亚洲精品美女| 亚洲综合伊人久久大杳蕉| 亚洲AV日韩AV永久无码免下载 | 亚洲国产激情一区二区三区| 久久久久亚洲AV无码专区桃色| 亚洲大尺度无码专区尤物| 自怕偷自怕亚洲精品| 亚洲日本乱码卡2卡3卡新区|