Hadoop學習筆記(二)--HDFS分佈式文件系統
HDFS簡介
優點:
- 處理超大文件
- 流式的訪問數據(一次寫入,多次讀取)
- 運行於廉價的商用機器集羣上
侷限性:
- 不適合處理低延遲數據訪問
- 無法高效存儲大量的小文件
- 不支持多用戶寫入及任意修改文件
HDFS架構
主從結構
- 主節點:只有一個NameNode(單點故障),HA下會有多個NameNode。
- 從節點:有很多DataNode。
NameNode負責
- 接收用戶操作請求
- 維護文件系統的目錄結構
- 管理文件與block之間的關係,block與DataNode之間的關係
DataNode負責
- 存儲文件
- 文件被分成block存儲在磁盤上
- 爲保證數據安全,文件會有多個副本
HDFS核心設計
數據塊
HDFS塊默認大小,Hadoop1是64M,Hadoop2是128M
數據副本存放策略
在多數情況下,HDFS默認的副本系數是3。
- 第一個block副本放在和client所在的node裏(如果client不在集羣範圍內,則這第一個node是隨機選取的,系統會嘗試不選擇那些太滿或者太忙的node)。
- 第二個副本放置在與第一個節點不同的機架中的node中(隨機選擇)。
- 第三個副本和第二個副本在同一個機架,隨機放在不同的node中。
安全模式
hadoop dfsadmin -safemode leave //強制NameNode退出安全模式
hadoop dfsadmin -safemode enter //進入安全模式
hadoop dfsadmin -safemode get //查看安全模式狀態
hadoop dfsadmin -safemode wait //等待,一直到安全模式結束
負載均衡
分析數據塊分佈和重新均衡DataNode上的數據分佈的工具。
$HADOOP_HOME/sbin/start-balancer.sh
心跳機制
1. Hadoop是master/slave結構,master中有NameNode、ResourceManager,slave中有DataNode、NodeManager。
2. master啓動時,會啓動一個ipc(Inter-Process Communication,進程間通信)server服務,等待slave連接。
3. slave啓動時,會主動連接master中的服務,並且每隔3秒連接一次master,這就是心跳,slave通過心跳彙報自己的狀態給master。
4. NameNode通過心跳知道DataNode的狀態;ResourceMangager也通過心跳知道Nodemanager的狀態。
5. 如果master長時間沒有收到slave的心跳,那麼它就認爲slave宕機了。
機架感知
大型Hadoop集羣是以機架的形式來組織的。默認沒有啓用。
HDFS操作
- 命令行接口
- Java接口