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為單位接收,先在本地快取,然後寫入目標檔案。...