Hadoop 解除 NameNode is in safe mode

運行hadoop程序時,有時候會報以下錯誤: 
org.apache.hadoop.dfs.SafeModeException: Cannot delete /user/hadoop/input. Name node is in safe mode 
這個錯誤應該還滿常見的吧(至少我運行的時候是這樣的) 

那我們來分析下這個錯誤,從字面上來理解: 
Name node is in safe mode 

說明Hadoop的NameNode處在安全模式下。 
那什麼是Hadoop的安全模式呢? 
在分佈式文件系統啓動的時候,開始的時候會有安全模式,當分佈式文件系統處於安全模式的情況下,文件系統中的內容不允許修改也不允許刪除,直到安全模式結束。安全模式主要是爲了系統啓動的時候檢查各個DataNode上數據塊的有效性,同時根據策略必要的複製或者刪除部分數據塊。運行期通過命令也可以進入安全模式。在實踐過程中,系統啓動的時候去修改和刪除文件也會有安全模式不允許修改的出錯提示,只需要等待一會兒即可。 

現在就清楚了,那現在要解決這個問題,我想讓Hadoop不處在safe mode 模式下,能不能不用等,直接解決呢? 
答案是可以的,只要在Hadoop的目錄下輸入: 
bin/hadoop dfsadmin -safemode leave 

也就是關閉Hadoop的安全模式,這樣問題就解決了。

之前在hadoop執行過程中使用了"ctrl+c"操作
再次使用hadoop時出現“Name node is in safe mode”提示:
root@v-jiwan-ubuntu-0:~/hadoop/hadoop-0.20.2# bin/hadoop fs -put conf input
put: org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot create directory /user/root/input/conf. Name node is in safe mode.

-----------------------------
最近在測試hadoop,但是沒想到在reduce時卡點,
沒辦法只好Ctrl+c,但是問題也就跟著來了XD
先將hadoop停止後,再啟動hadoop
然後要刪除DFS裡的資料時,
就出現name node is in safe mode,就沒辦法刪除資料啦!
找了好久才找到答案,
bin/hadoop dfsadmin -safemode leave
就可以把safemode解除,為了這個問題煩惱了好久Orz
-----------------------------
safemode模式
NameNode在啓動的時候首先進入安全模式,如果datanode丟失的block達到一定的比例(1-dfs.safemode.threshold.pct),則系統會一直處於安全模式狀態即只讀狀態。
dfs.safemode.threshold.pct(缺省值0.999f)表示HDFS啓動的時候,如果DataNode上報的block個數達到了元數據記錄的block個數的0.999倍纔可以離開安全模式,否則一直是這種只讀模式。如果設爲1則HDFS永遠是處於SafeMode。
下面這行摘錄自NameNode啓動時的日誌(block上報比例1達到了閥值0.9990)
The ratio of reported blocks 1.0000 has reached the threshold 0.9990. Safe mode will be turned off automatically in 18 seconds.
hadoop dfsadmin -safemode leave
有兩個方法離開這種安全模式
1. 修改dfs.safemode.threshold.pct爲一個比較小的值,缺省是0.999。
2. hadoop dfsadmin -safemode leave命令強制離開
http://bbs.hadoopor.com/viewthread.php?tid=61&extra=page%3D1
-----------------------------
Safe mode is exited when the minimal replication condition is reached, plus an extension
time of 30 seconds. The minimal replication condition is when 99.9% of the blocks in
the whole filesystem meet their minimum replication level (which defaults to one, and
is set by dfs.replication.min).
安全模式的退出前提 - 整個文件系統中的99.9%(默認是99.9%,可以通過dfs.safemode.threshold.pct設置)的Blocks達到最小備份級別(默認是1,可以通過dfs.replication.min設置)。
dfs.safemode.threshold.pct    float    0.999
The proportion of blocks in the system that must meet the minimum
replication level defined by dfs.rep lication.min before the namenode
will exit safe mode. Setting
this value to 0 or less forces the name-node not to start in safe mode.
Setting this value to more than 1 means the namenode never exits safe
mode.
-----------------------------
用戶可以通過dfsadmin -safemode value   來操作安全模式,參數value的說明如下:
enter - 進入安全模式
leave - 強制NameNode離開安全模式
get -   返回安全模式是否開啓的信息
wait - 等待,一直到安全模式結束。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章