引子:
這段時間折騰的都是hadoop和lucene,總結了hadoop在運營過程中出現問題時的解決方案,請大家指教!
HDFS(0.20.2)運營中急救方案1
Namenode 掛掉(secondarynamenode無影響)
如果Namenode掛掉,如果能立即起來通過,start-dfs.sh 能夠重新起來則可以正常使用。否則按照以下操作。下面所有操作前提是有完整的secondarynamenode。
1)
在非secondarynamenode伺服器中選擇datanode作為namenode。(目前在正式文檔中沒有發現,建議採用第二種,但在測試中沒發現問題)
a)
Kill掉所有服務。
b)
修改新namenode伺服器 設定檔:core-site.xml,masters,slaves等相關檔案。
c)
修改hosts檔案
d)
重新設定各節點 ssh ,使新namenode到其他datanode 正常無密碼ssh登陸
e)
將運行secondarynamedode機器上的hadoop.tmp.dir/dfs/namesecondary 拷貝到新namenode伺服器hadoop.tmp.dir/dfs目錄。
f)
將namesecondary改名為name
g)
bin/start-dfs.sh啟動hdfs。
2)
在非secondarynamenode伺服器中選擇datanode作為namenode。通過匯入以前的檢查點來恢複namenode。
a)
Kill掉所有服務。
b)
修改新namenode伺服器 設定檔:core-site.xml,masters,slaves等相關檔案。
c)
修改hosts檔案
d)
重新設定各節點 ssh ,使新namenode到其他datanode 正常無密碼ssh登陸
e)
在namenode伺服器core-site.xml中配置fs.checkpoint.dir(預設是在$hadoop.tmp.dir/dfs/ namesecondary).
<property>
<name>fs.checkpoint.dir</name>
<value>/home/hadoop/hadoop-data/dfs/namesecondary</value>
</property>
f)
將運行secondarynamedode機器上的hadoop.tmp.dir/dfs/namesecondary 拷貝到namenode伺服器fs.checkpoint.dir目錄.
g)
執行bin/hadoop namenode –importCheckpoint 匯入檢查點。
h)
執行bin/start-dfs.sh 啟動dfs.
2
Datanode掛掉(不帶secondarynamenode)
1)
原伺服器完全壞掉,起不來,只能引入新的datanode。
i.
從其他datanode拷貝hadoop所有配置到新伺服器
ii.
設定hosts,將所有datanodes 和namenode 設定hosts
iii.
設定ssh無密碼登陸,並測試
iv.
在namenode conf 的slaves中配置新加datanode
v.
在新加datanode上通過bin/hadoop-daemon.sh start datanode
啟動該新datanode。
2)
原伺服器可以立即起來
i.
因為namenode slaves有該datanode,可以直接在namenode中執行bin/start-dfs.sh 啟動
ii.
也可以在該伺服器 通過bin/hadoop-daemon.sh start
datanode啟動
3
Datanode掛掉(帶secondarynamenode)
1)
Namenode正常運行情況下,如果該datanode可以立即投入使用,則直接在namenode中執行bin/start-dfs.sh 啟動
2)
Namenode正常運行情況下,如果該datanode無法使用,則考慮新增datanode,並配置secondarynamenode。
在新節點
設定檔hdfs-site.xml中 配置:
<property>
<name>dfs.http.address</name>
<value>netease-namenode-test:50070</value>
</property>
該配置在namenode使用預設即可。如果添加上通過外網訪問netease-namenode-test:50070可能會由於網段不同導致訪問不到。
使secondarynamenode能夠post請求到namenode。
然後在namenode masters中增加 新的secondarynamenode 並配置hosts
使用bin/start-dfs.sh 啟動。