Hadoop啟蒙 HDFS讀寫流程

2021-10-20 01:48:36 字數 1597 閱讀 1803

hdfs是基於谷歌的"gfs"**的開源實現的乙個分布式檔案系統。

優點:

適合儲存大量資料。

可以執行在廉價計算機上。

易擴充套件、高容錯。

缺點:

不支援修改,只能追加。

小檔案過多會降低效能,會導致記憶體中的元資料量增多,會對mapreduce計算造成影響。

乙個檔案同一時間只能乙個客戶端操作。

namenode:

管理檔案元資料,並將元資料儲存在記憶體中,以便對外提供更快速的服務。

通過專門的持久化機制保證資料的安全。

datanode:

負責儲存資料,檔案會按照特定大小切分成多個block,datanode就負責儲存這些block和它們的副本。

定期與namenode保持心跳,以及向namenode匯報自己的block資訊。

一、寫流程

客戶端向namenode申請寫入檔案。

namenode校驗位址是否有效、以及客戶端許可權等,如果允許上傳,會給客戶端傳送響應。

客戶端收到namenode的響應後,開始準備上傳檔案,按128m的大小將檔案切分成若干個block塊,先去詢問namenode第乙個block塊放哪幾台datanode。

namenode收到上傳請求後,會返回三颱可用的datanode節點資訊。

客戶端收到datanode的節點資訊後,會與最近的一台datanode建立pipeline連線。

第一台datanode會繼續與下一台datanode建立連線,下一台再與下一台建立連線,整個傳輸通道連線建立完畢後會依次返回客戶端。

客戶端將第乙個block傳送到第一台datanode,並以packet(64kb)為基本單位傳送。

datanode在收到packet後,會按照516b為乙個chunk進行資料校驗,其中512b是資料,4b是校驗位。

datanode1每收到乙個packet後本地儲存,然後**給datanode2並開始接收下乙個packet,datanode2接收完畢後再**給datanode3。

當乙個block塊傳輸完畢後,datanode會給客戶端傳送響應,同時各個datanode分別向namenode匯報自己的block,然後客戶端開始上傳下乙個block,重複3~9過程。

客戶端收到所有block上傳完畢後,客戶端斷開連線,通知namenode檔案上傳完畢。

二、讀流程

客戶端向namenode傳送讀請求,獲取檔案的元資料。

namenode將檔案的所有block塊所在的datanode以列表形式返回客戶端,並按距離排序。

客戶端就近挑選一台datanode建立輸入流。

客戶端同樣以packet為基本單位來接收並校驗。

戶端同樣以packet為基本單位來接收並校驗。

傳輸完成後關閉輸入流。

大資料小白,建議先看這篇

Hadoop詳解與HDFS讀寫流程

hadoop 包含分布式檔案系統和分布式計算的乙個框架。hdfs,mapreduce hadoop專案模組包括4部分 hadoop common 工具類 hadoop distributed system hdfs 分布式檔案系統 hadoop yarn 分布式資源管理 hadoop mapredu...

hadoop 3 HDFS讀寫流程

client按照預設block大小切割 如200m 200的資料會被切割成128 72兩個個block塊 然後按下圖開始寫。第乙個block走全流程,後面的block之前從addblock 開始 1.客戶端通過distributed filesystem模組向namenode請求上傳檔案,namen...

hadoop原理記錄 HDFS讀寫資料

2.返回目標檔案的元資料 挑選一台datanode 就近原則,然後隨機 伺服器,請求讀取資料。3.客戶端請求讀資料block1 datanode開始傳輸資料給客戶端 從磁碟裡面讀取資料輸入流,以packet為單位來做校驗 4.傳輸資料 客戶端以packet為單位接收,先在本地快取,然後寫入目標檔案。...