Hadoop學習(1)——組件介紹(HDFS)

1.1、分佈式存儲系統HDFS 介紹

(1)存儲模型:字節

文件線性切割成塊(Block:偏移量 offset ;

Block分散存儲在集羣節點中,單一文件Block大小一致,文件與文件可以不一致;

Block可以設置副本數,副本無序分散在不同節點中(副本數不要超過節點數量);

文件上傳可以設置Block大小和副本數,已上傳的文件Block副本數可以調整,大小不變;

只支持一次寫入多次讀取,同一時刻只有一個寫入者;

可以append追加數據。

(2)架構模型

文件元數據MetaData,文件數據 

  • 元數據
  • 數據本身

(主)NameNode節點保存文件元數據單節點   posix

(從)DataNode節點保存文件Block數據:多節點

DataNodeNameNode保持心跳,提交Block列表

HdfsClientNameNode交互元數據信息

HdfsClientDataNode交互文件Block據(cs)

DataNode 利用服務器本地文件系統存儲數據塊

(3)HDFS架構:

NameNode(NN):

(1)基於內存存儲 :不會和磁盤發生交換(雙向)

  • 只存在內存中
  • 持久化(單向)

(2)NameNode主要功能:接受客戶端的讀寫服務、收集DataNode彙報的Block列表信息

(3)NameNode保存metadata信息包括:

  • 文件owership和permissions
  • 文件大小,時間
  • Block列表:Block偏移量),位置信息(持久化不存)
  • Block每副本位置(由DataNode上報)

(4)NameNode持久化:

  • NameNode的metadata信息在啓動後會加載到內存
  • metadata存儲到磁盤文件名爲”fsimage(時點備份)
  • Block的位置信息不會保存到fsimage
  • edits記錄對metadata的操作日誌…>Redis

SecondaryNameNode(SNN):

(1)作用:它不是NN的備份(但可以做備份),它的主要工作是幫助NN合併edits log,減少NN啓動時間。

(2)SNN執行合併時機:

  • 根據配置文件設置的時間間隔fs.checkpoint.period  默認3600秒
  • 根據配置文件設置edits log大小 fs.checkpoint.size 規定edits文件的最大值默認是64MB 

DataNode(DN):

  • 本地磁盤目錄存儲數據(Block)文件形式
  • 同時存儲Block的元數據信息文件
  • 啓動DN時會向NN彙報block信息
  • 通過向NN發送心跳保持與其聯繫(3秒一次),如果NN 10分鐘沒有收到DN的心跳,則認爲其已經lost,並copy其上的block到其它DN

(4)HDFS寫流程

Client:切分文件Block

-->按Block線性和NN獲取DN列表(副本數)

-->驗證DN列表後以更小的單位流式傳輸數據

-->各節點,兩兩通信確定可用

-->Block傳輸結束後:

  • DN向NN彙報Block信息
  • DN向Client彙報完成
  • Client向NN彙報完成獲取下一個Block存放的DN列表.

-->最終Client彙報完成NN會在寫流程更新文件狀態

(5)HDFS讀流程

Client:

  • 和NN獲取一部分Block副本位置列表
  • 線性和DN獲取Block,最終合併爲一個文件
  • 在Block副本列表中按距離擇優選
  • MD5驗證數據完整性

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章