上一章讲过,Hue集成环境是可以直接操作Hbase,但是公司的环境一直报错,虽然也可以透过写代码访问Hbase,但是看到Hue环境中无法访问,还是觉得不爽,因此决定再花些力气找找原因。
找原因要先查Log,百度里查Hue Log,发现以管理员身份登入Hue,点击About是可以看到Log的,同时还有更惊奇的发现,About的第一步就是自检(Check Configuration),如下图,会将配置错误的部分列出来
看到这里就明白了为什么在Hue 里Hbase Browser一直在转圈圈跑不出来,原因配置有误 。
按此错误信息找,在StackOverflow里有一个贴子讲到,是几个配置项的问题
hbase.regionserver.thrift.http = true
hbase.thrift.support.proxyuser = true
hbase.thrift.security.qop = auth
但是没有讲清楚,也有说只要将hbase.thrift.support.proxyuser设为false
按照上面的说法,在Hbase配置项里配置hbase.regionserver.thrift.http = true,hbase.thrift.support.proxyuser = true,hbase.thrift.security.qop = auth,重启HBase服务,再次进入Hue的Hbase Browser功能,发现还是报错,提示:
点击Hue About进行配置自检提示,才发现这样配置后Thrift Server根本就无法启动。
尝试将配置项配置hbase.thrift.security.qop改回之前的设置,hbase.regionserver.thrift.http = true,hbase.thrift.support.proxyuser = true这两项配置不变,重启HBase服务,发现Hbase Browser又报另一个错了”TSocket read 0 bytes“
我把Hue服务也重启了,结果还是提示Api Error,只是后面没有具体的错误信息,只能在Log里找原因了,查Log后再在网上找,发现有个人跟我碰到同样的问题,且有解决方法,参考链接:https://yq.aliyun.com/ask/238832,我按照其中一位网友的回复中操作,在
hue_safety_valve.ini 的 Hue 服务高级配置代码段(安全阀)这个栏目里配置以下值:
[hbase]
hbase_conf_dir={{HBASE_CONF_DIR}}
thrift_transport=buffered
重启Hbase和Hue,发现还是报错,这次看Log,提示“hbase is not allowed to impersonate ***".
关于这个impersonate,查了很多资料 ,觉得http://hotcodeshare.com/node/81这个说得最好,按其步骤操作,要重启HDFS服务。