1、HDFS原理:
一個節點登記,其他節點存數據,其他節點存完數據向登記節點回報。
2、存儲模型(字節):
- 文件線性切割成塊(Block:偏移量、位置信息)
- 偏移量 offset(byte)
offset:塊的第一個字節面向原文件的下標
第一個字節下標是0
如果一個塊是四個字節,那麼第一個塊是0、1、2、3,第二個塊的偏移量是4
- Block分散存儲在集羣節點中
- 單一文件Block大小一致,文件與文件可以不一致
定義四個字節一個塊,存儲時就是四個字節,如果最後只剩下兩個字節,那麼就是一個塊存兩個字節
第一個文件可以是四個字節一個塊,第二個直接可以是8個字節
- Block可以設置副本數(一個文件切了兩個塊,也就是兩個節點A1和B1,如果A1掛掉,那麼文件不再完整,則需要A*作爲副本,提高可靠性),副本分散在不同節點中
副本數不要超過節點數量
塊是平級的,如果有三個副本,則這個塊需要三個節點存儲。
- 文件上傳可以設置Block大小和副本數
- 已上傳的文件Block副本數可以調整,大小不變
- 只支持一次寫入多次讀取,同一時刻只有一個寫入者
- 可以append追加數據
3、架構模型:
- 文件元數據MetaData,文件數據
元數據
數據本身
- (主)NameNode節點(進程維護了虛擬目錄樹來映射存儲關係)保存文件元數據:單節點 posix
- (從)DataNode節點(保存小文件)保存文件Block數據:多節點
- DataNode與NameNode保持心跳,提交Block列表
- HdfsClient與NameNode交互元數據信息
- HdfsClient與DataNode交互文件Block數據
4、HDFS設計思想
HDFS 1.*版本的Block默認大小是64M,2.*Block版本的默認大小是128M。