我正在为Hadoop构建一个自动安装脚本,我遇到了HBase无法启动的问题,因为HDFS尚未完全启动并准备就绪。我如何以编程方式(从Bash,理想情况下)判断HDFS系统是否已准备好启动HBase,所以我可以等到它?
我尝试使用“hadoop dfsadmin -report”并尝试使用正确数量的节点,但显然在集群实际为业务做好准备之前仍会返回。
答案 0 :(得分:3)
使用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
编辑:正如评论中提到的那样,根据HADOOP-756,-safemode wait
本身会等到安全模式关闭。在这种情况下,您可以简单地发出等待,而while循环则是不必要的。但是,如果你想继续尝试只持续一段时间并且如果DFS仍未启动或者其他东西,那么while
循环可能仍然有用。我看到当我们在设置群集时出错时会发生这种情况。