1、HDFS基礎知識
管理着文件系統命名空間
–
維護着文件系統樹及樹中的全部文件和目錄
存儲元數據
– NameNode
保存元信息的種類有:
• 文件名目錄名及它們之間的層級關係
• 文件目錄的全部者及其權限
• 每一個文件塊的名及文件有哪些塊組成
– NameNode
元信息並不包含每一個塊的位置信息
元信息持久化
- 在
NameNode中存放元信息的文件是fsimage。在系統運行期間全部對元信息的操做都保存在內存中並被持久化到另外一個文件edits中。而且edits文件和fsimage文件會被SecondaryNameNode週期性的合併
fsimage: 內存中的元數據定時寫入 磁盤,保存在 fsimage 中,是一個checkpoint
edits: 在這個checkpoint以後, 文件系統定時更新會記錄在 edits 文件中
2. datanode 負責:
- 存儲文件
- 文件被分紅block存儲在磁盤上
- 爲保證數據安全,文件會有多個副本
3. Secondary NameNode
合併FsImage 和 EditLog 成爲一個新的snapshot
按期清理和壓縮NameNode的文件系統的狀態信息,以便NameNode更高效
FsImage:is a snapshot of the filesystem at some checkpoint
EditLog:records each incremental change (delta) to the filesystem after that checkpoint
4. JobTracker 負責:
- 接收客戶提交的計算任務
- 把計算任務分給 TaskTrackers 執行
- 監控TaskTrackers 的執行狀況
5. TaskTrackers 負責:
- 執行 JobTracker 分配的計算任務
2、HDFS命令
1. hadoop fs -setrep -R -w 3 /data/analytic/ //手動設置指定路徑下全部文本的副本個數
2. hadoop fsck / 能夠查看/ 路徑下全部文件的健康情況
3. hadoop fsck -delete 能夠移除 missing block
4. hadoop fsck [filepath] -files -blocks -racks //查看文件的具體存儲信息(文件被分紅多少個block, 在哪一個 rack 上, 有幾個replica 等)
5. hadoop fsck /path/to/corrupt/file -locations -blocks -files
6. 平衡集羣
dfsadmin -setBalancerBandwidth newbandwidth //默認值是 1MB
hadoop dfsadmin -setBalancerBandwidth 10485760 //更改爲 10MB
hdfs balancer -threshold 5 //平衡集羣數據分佈,
這個操做是帶寬密集形操做,建議在凌晨或週末運行
7. 動態刪除datanode
dfs.hosts.exclude //指向一個文件,該文件每行寫一個要刪除的datanode 的hostname
而後運行:hadoop dfsadmin -refreshNodes
8. 動態添加datanode
對新添加的datanode進行文件配置,在各臺機子的 /etc/hosts 中添加該機子的IP, 在各臺機子的/etc/hadoop/conf/slaves 中添加該機子的IP
而後手動開啓 這臺datanode
9.
distcp(同步文件)
源 目的地
hadoop distcp /tmp/test hdfs://hudson.novalocal:8020/tmp
10. namenode 退出安全模式:
sudo -u hdfs hdfs dfsadmin -safemode leave
hadoop 在啓動時,namenode 會把img 加載進內存,在安全模式中,整個HDFS對於客戶端只是可讀的,系統中的block具體位置信息不是由namenode來維護的,是以block list 的形式存在datanode中的,正常工做中,namenode會在內存中保留全部block的location映射信息,在安全模式中,每一個datanode會把最新的block location 信息發送給namenode