Hadoop Core_HDFS總結(二)
三、HDFS高可靠性措施
1)冗餘備份
資料儲存在這些 HDFS 中的節點上,為了防止因為某個節點宕機而導致資料丟失,HDFS 對資料進行冗餘備份,至於具體冗餘多少個副本,在 dfs.replication 中配置。
2)跨機架副本存放
僅僅對資料進行冗餘備份還不夠,假設所有的備份都在一個節點上,那麼該節點宕機後,資料一樣會丟失, 因此 HDFS 要有一個好的副本存放策略, 該策略還在開發中。目前使用的是, 以dfs.replication=3 為例,在同一機架的兩個節點上各備份一個副本,然後在另一個機架的某個節點上再放一個副本。前者防止該機架的某個節點宕機,後者防止某個機架宕機。
3)心跳檢測
DataNode 節點定時向 NameNode 節點發送心跳包,以確保 DataNode 沒有宕機。如果宕機,會採取相應措施,比如資料副本的備份。
4)資料完整性檢測
NameNode 在建立 HDFS 檔案時,會計算每個資料的校驗和並儲存起來。當客戶端從 DataNode 獲取資料時,他會將獲取的資料的校驗和與之前儲存的校驗和進行對比。
5)安全模式
HDFS 啟動時,會進入安全模式,此時不允許寫操作。這時,NameNode 會收到所有 DataNode 節點的資料塊報告,在確認安全之後,系統自動退出安全模式。
6)核心檔案備份
HDFS 的核心檔案是映像檔案和事務日誌,如果這些檔案損壞,將會導致 HDFS 不可用。系統支援對這兩個檔案的備份,以確保 NameNode 宕機後的恢復。
7)空間回收
從 HDFS 中刪除的檔案會首先被放入到/trash 中,/trash 資料夾中的內容是被刪除檔案最後的副本,該資料夾會被定時清空。該資料夾中不存在的檔案就徹底不存在了。
四、HDFS shell應用
1、HDFS shell命令分類
2、hdfs dfs 常用命令
1)檢視所有命令 hdfs dfs
2) 檢視某目錄下檔案列表
檢視hdfs根目錄下的檔案列表
hdfs dfs -ls /
檢視指定目錄下的資料夾及檔案
hdfs dfs -lsr /
3) 檢視某文字檔案的內容
hdfs dfs -cat /tmp/index.html
4) 建立目錄
hdfs dfs -mkdir -p /tmp/edu
5) 刪除目錄
hdfs dfs -rmr /tmp/edu
6) 從hdfs下載檔案
hdfs dfs -copyToLocal /tmp/index.html
7)從本地上傳檔案到hdfs
hdfs dfs -copyFromLocal index.html /tmp/edu
8) 檢視壓縮的文字內容
hdfs dfs -text /tmp/edu/index.gz
9) 檢視檔案大小
hdfs dfs -du -h /tmp/tianliangedu
10) 建立檔案
hdfs dfs -touchz /tmp/tianliangedu/HelloWorld.txt
3、hdfs dfsadmin
hdfs dfsadmin 是叢集管理員 的常用命令,用來對 HDFS 叢集的整體執行進行管理和運維。常用的管理命令如下:
1)檢視可用的管理命令
hdfs dfsadmin -help
2)報告檔案系統資訊
hdfs dfsadmin -report
3)設定目錄配額
hdfs dfsadmin -setQuota <quota> <dirname>……<dirname>
比如:hdfs dfsadmin -setQuota 10 /tmp/tianliangedu
4)安全模式管理
當叢集環境啟動時,NameNode 會進入一個安全模式。此時不會出現資料塊的寫操作。NameNode 會收到各個 DataNode 擁有的資料塊列表的資料塊報告,由此 NameNode 獲得所有的資料塊資訊。資料塊達到最小副本數時,該資料塊就被認為是安全的。
hdfs dfsadmin -safemode get ##返回安全模式是否開啟的資訊,返回 Safe mode is OFF/OPEN
hdfs dfsadmin -safemode enter ##進入安全模式
hdfs dfsadmin -safemode leave ##強制 NameNode 退出安全模式
hdfs dfsadmin -safemode wait ##等待,一直到安全模式結束