首页 > 代码库 > Hortonworks HDP Sandbox 2.2 修复HBase无法启动的问题
Hortonworks HDP Sandbox 2.2 修复HBase无法启动的问题
在最新发布的Hortonworks HDP Sandbox 2.2版本上,HBase启动时会报错,原因是新版本的HBase的存放路径与过去有所不同,而启动脚本依然沿用了旧有的命令行启动HBase,导致无法找到hbase-daemond.sh文件,进而启动失败。看得到,2.2版本的Sandbox发布有些仓促,这样明显而简单的错误是不应该出现的。下面来说一下如何修复这个问题:
最负责启动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)
Hortonworks HDP Sandbox 2.2 修复HBase无法启动的问题