今天聽了王家林的hadoop的集羣管理工具dfsadmin介紹,也實際操作了下,不過沒找到感覺,不知道是自己腦子空白還是怎麼的,倒是下面這篇文章還靠譜。
一、hdfs dfsadmin -safemode 安全模式
NameNode在啓動的時候 首先進入安全模式,如果datanode丟失的block達到一定的比例(由hdfs-site.xml文件中dfs.safemode.threshold.pct決定,默認0.999f),則系統會一直處於安全模式狀態即只讀狀態 ; 否則沒有其他情況影響,一般情況下,系統會自動離開安全模式。
dfs.safemode.threshold.pct 表示HDFS啓動的時候,如果DataNode上報的 block個數0.999倍纔可以離開安全模式,否則一直是這種只讀狀態。如果設爲1則hdfs永遠是處於SafeMode。
通常兩種情況可以離開這處安全模式:
1、修改 dfs.safemode.threshold.pct爲一個比較小的值,缺省值是0.999
2、hadoop dfsadmin -safemode leave 命令強制離開
用戶可以使用命令行(hdfs dfsadmin -safemode value)做如下的操作:
[plain] view plain copy
# hdfs dfsadmin -safemode get ## 返回安全模式是否開啓的信息,返回 Safe mode is OFF/OPEN
# hdfs dfsadmin -safemode enter ## 進入安全模工
# hdfs dfsadmin -safemode leave ## 強制 NameNode 離開安全模式
# hdfs dfsadmin -safemode wait ## 等待,一直到安全模式結束
hdfs dfsadmin 的其他命令:
命令選項 | 描述 |
---|---|
-report | 報告文件系統的基本信息和統計信息。 |
-safemode enter | leave | get | wait | 安全模式維護命令。安全模式是Namenode的一個狀態,這種狀態下,Namenode 1. 不接受對名字空間的更改(只讀) 2. 不復制或刪除塊 Namenode會在啓動時自動進入安全模式,當配置的塊最小百分比數滿足最小的副本數條件時,會自動離開安全模式。安全模式可以手動進入,但是這樣的話也必須手動關閉安全模式。 |
-refreshNodes | 重新讀取hosts和exclude文件,更新允許連到Namenode的或那些需要退出或入編的Datanode的集合。 |
-finalizeUpgrade | 終結HDFS的升級操作。Datanode刪除前一個版本的工作目錄,之後Namenode也這樣做。這個操作完結整個升級過程。 |
-upgradeProgress status | details | force | 請求當前系統的升級狀態,狀態的細節,或者強制升級操作進行。 |
-metasave filename | 保存Namenode的主要數據結構到hadoop.log.dir屬性指定的目錄下的<filename>文件。對於下面的每一項,<filename>中都會一行內容與之對應 1. Namenode收到的Datanode的心跳信號 2. 等待被複制的塊 3. 正在被複制的塊 4. 等待被刪除的塊 |
-setQuota <quota> <dirname>...<dirname> | 爲每個目錄 <dirname>設定配額<quota>。目錄配額是一個長整型整數,強制限定了目錄樹下的名字個數。 命令會在這個目錄上工作良好,以下情況會報錯: 1. N不是一個正整數,或者 2. 用戶不是管理員,或者 3. 這個目錄不存在或是文件,或者 4. 目錄會馬上超出新設定的配額。 |
-clrQuota <dirname>...<dirname> | 爲每一個目錄<dirname>清除配額設定。 命令會在這個目錄上工作良好,以下情況會報錯: 1. 這個目錄不存在或是文件,或者 2. 用戶不是管理員。 如果目錄原來沒有配額不會報錯。 |
-help [cmd] | 顯示給定命令的幫助信息,如果沒有給定命令,則顯示所有命令的幫助信息。 |