如何让 HBase 等待 HDFS 准备好后再启动?

lev*_*and 1 bash hadoop hbase hdfs

我正在为 Hadoop 构建自动安装脚本,但遇到了 HBase 无法启动的问题,因为 HDFS 尚未完全启动并准备就绪。我如何以编程方式(最好是从 Bash)判断 HDFS 系统是否已准备好供 HBase 启动,以便我可以等到它准备好为止?

我尝试使用“hadoop dfsadmin -report”并查找正确的节点数量,但显然在集群实际准备好业务之前仍然会返回。

Har*_*non 5

用于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
Run Code Online (Sandbox Code Playgroud)

编辑:正如 levand 在评论中提到的那样,根据HADOOP-756-safemode wait它本身将等待安全模式关闭。在这种情况下,您只需发出 wait 即可,而无需 while 循环。但是,如果您只想继续尝试一定的时间并在 DFS 仍未启动或其他情况下终止进程,那么循环while可能仍然有用。我见过当我们在设置集群时出错时会发生这种情况。