首页 > 代码库 > 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无法启动的问题