在最新发布的Hortonworks HDP Sandbox 2.2版本上,HBase启动时会报错,原因是新版本的HBase的存放路径与过去有所不同,而启动脚本依然沿用了旧有的命令行启动HBase,导致无法找到hbase-daemond.sh文件,进而启动失败。看得出,2.2版本的Sandbox发布有些仓促,这样明显而简单的错误是不应该出现的。下面来说一下如何修复这个问题:本文原文出处: http://blog.csdn.net/bluishglc/article/details/42110429 严禁任何形式的转载,否则将委托CSDN官方维护权益!
负责启动HBase的命令位于/usr/lib/hue/tools/start_scripts/start_deps.mf这个文件中的,首先,我们做一个该文件的备份:
cp /usr/lib/hue/tools/start_scripts/startup_script /usr/lib/hue/tools/start_scripts/startup_script.bak然后:
vim /usr/lib/hue/tools/start_scripts/startup_script
找到hbase_master: postgresql zookeeper开始的行,如下:
hbase_master: postgresql zookeeper $(call colorized,\ hbase master, \ su - hbase -c "/usr/hdp/current/hbase/bin/hbase-daemon.sh --config /etc/hbase/conf start master",\ sleep 25,\ /var/log/hbase/hbase-hbase-master-*.log) hbase_stargate: postgresql hbase_master $(call colorized,\ hbase stargate, \ su -l hbase -c "/usr/hdp/current/hbase/bin/hbase-daemon.sh start rest -p 60080",\ true,\ /var/log/hbase/hbase-hbase-rest-*.log) hbase_thrift: postgresql hbase_master $(call colorized,\ hbase thrift, \ su -l hbase -c "/usr/hdp/current/hbase/bin/hbase-daemon.sh start thrift",\ true,\ /var/log/hbase/hbase-hbase-rest-*.log) hbase_regionservers: hbase_master $(call colorized,\ hbase regionservers, \ su -l hbase -c "/usr/hdp/current/hbase/bin/hbase-daemon.sh --config /etc/hbase/conf start regionserver",\ sleep 5,\ /var/log/hbase/hbase-hbase-regionserver-*.log)
我们可以看到所有启动HBase相关服务的命令都是使用的/usr/hdp/current/hbase/bin/hbase-daemon.sh这个文件,而新版本中,在/usr/hdp/current下已经没有hbase这个目录了,取而代之的是hbase-master,hbase-regionserver,hbase-master,所以我们需要根据启动的服务类型,选择对应目录下的hbase-daemond.sh。以下是修改之后的内容:
hbase_master: postgresql zookeeper $(call colorized,\ hbase master, \ su - hbase -c "/usr/hdp/current/hbase-master/bin/hbase-daemon.sh --config /etc/hbase/conf start master",\ sleep 25,\ /var/log/hbase/hbase-hbase-master-*.log) hbase_stargate: postgresql hbase_master $(call colorized,\ hbase stargate, \ su -l hbase -c "/usr/hdp/current/hbase-client/bin/hbase-daemon.sh start rest -p 60080",\ true,\ /var/log/hbase/hbase-hbase-rest-*.log) hbase_thrift: postgresql hbase_master $(call colorized,\ hbase thrift, \ su -l hbase -c "/usr/hdp/current/hbase-client/bin/hbase-daemon.sh start thrift",\ true,\ /var/log/hbase/hbase-hbase-rest-*.log) hbase_regionservers: hbase_master $(call colorized,\ hbase regionservers, \ su -l hbase -c "/usr/hdp/current/hbase-regionserver/bin/hbase-daemon.sh --config /etc/hbase/conf start regionserver",\ sleep 5,\ /var/log/hbase/hbase-hbase-regionserver-*.log)