1
我正在爲Hadoop構建一個自動化安裝腳本,而且我遇到了HBase無法啓動的問題,因爲HDFS尚未完全引導並準備就緒。我如何以編程方式(從Bash,理想情況下)告訴HDFS系統是否已準備好引導HBase,所以我可以等到它?如何讓HBase等待直到HDFS準備就緒?
我嘗試使用「hadoop dfsadmin -report」併爲正確的節點數量進行grepping,但顯然這仍然會在集羣實際上準備就緒之前返回。
我正在爲Hadoop構建一個自動化安裝腳本,而且我遇到了HBase無法啓動的問題,因爲HDFS尚未完全引導並準備就緒。我如何以編程方式(從Bash,理想情況下)告訴HDFS系統是否已準備好引導HBase,所以我可以等到它?如何讓HBase等待直到HDFS準備就緒?
我嘗試使用「hadoop dfsadmin -report」併爲正確的節點數量進行grepping,但顯然這仍然會在集羣實際上準備就緒之前返回。
使用hadoop dfsadmin -safemode wait
檢查HDFS是否超出安全模式。這樣的事情應該做的伎倆:
while $HADOOP_HOME/bin/hadoop dfsadmin -safemode wait | grep ON
do
sleep 1s # Or 10s or 1m or whatever time
done
編輯:由於levand在評論中提到,按照HADOOP-756,-safemode wait
本身會等到安全模式是關閉的。在這種情況下,你可以簡單地發出wait,while循環就沒有必要了。但是,如果你想繼續嘗試一段時間並且在DFS還沒有啓動的情況下終止進程,那麼while
循環可能仍然有用。當我們在設置集羣時出錯時,我看到了這種情況。
謝謝!一個問題:閱讀dfsadmin -safemode wait命令(https://issues.apache.org/jira/browse/HADOOP-756),它看起來像'wait'已經被阻塞了,不需要編寫你自己的循環。我錯過了什麼嗎? – levand
啊,真棒。很長一段時間,因爲我從事這方面的工作。集羣管理很長時間外包給另一個部門,所以現在這都是別人的頭痛; D –