cdh界面 hue 配置hbase_06355.16.1Hue集成HBase出现Api Error异常分析

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。

Fayson的github:

https://github.com/fayson/cdhproject

提示:代码块部分可以左右滑动查看噢

1

问题重现

  • 测试环境:

1.RedHat7.4

2.CDH5.16.1

3.使用root进行操作

4.集群已启用Kerberos

1.登录Hue并选择HBase模块。

1550fd8cfb9f8762cac6285799b2a84b.png

界面上报错“API Error:timed out”,无法访问HBase中的表。

2.查看Hue的log有以下报错:

[root@ip-172-31-13-38 hue]#vim /var/log/hue/runcpserver.log
[19/May/2019 07:07:07 -0700] thrift_util  WARNING  Not retrying thrift call getTableNames due to socket timeout
[19/May/2019 07:07:07 -0700] thrift_util  INFO     Thrift saw a socket error: timed out
[19/May/2019 07:07:07 -0700] exceptions_renderable ERROR    Potential trace: [('/opt/cloudera/parcels/CDH-5.16.1-1.cdh5.16.1.p0.3/lib/hue/apps/hbase/src/hbase/api.py', 46, 'query', 'return getattr(self, action)(*args)'), ('/opt/cloudera/parcels/CDH-5.16.1-1.cdh5.16.1.p0.3/lib/hue/apps/hbase/src/hbase/api.py', 141, 'getTableList', "return [{'name': name, 'enabled': client.isTableEnabled(name, doas=self.user.username)} for name in client.getTableNames(doas=self.user.username)]"), ('/opt/cloudera/parcels/CDH-5.16.1-1.cdh5.16.1.p0.3/lib/hue/desktop/core/src/desktop/lib/thrift_util.py', 385, 'wrapper', "raise StructuredException('THRIFTSOCKET', str(e), data=None, error_code=502)")]
[19/May/2019 07:07:07 -0700] middleware   INFO     Processing exception: Api Error: timed out: Traceback (most recent call last):
  File "/opt/cloudera/parcels/CDH-5.16.1-1.cdh5.16.1.p0.3/lib/hue/build/env/lib/python2.7/site-packages/Django-1.6.10-py2.7.egg/django/core/handlers/base.py", line 112, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/opt/cloudera/parcels/CDH-5.16.1-1.cdh5.16.1.p0.3/lib/hue/build/env/lib/python2.7/site-packages/Django-1.6.10-py2.7.egg/django/db/transaction.py", line 371, in inner
    return func(*args, **kwargs)
  File "/opt/cloudera/parcels/CDH-5.16.1-1.cdh5.16.1.p0.3/lib/hue/apps/hbase/src/hbase/views.py", line 79, in api_router
    return api_dump(HbaseApi(request.user).query(*url_params))
  File "/opt/cloudera/parcels/CDH-5.16.1-1.cdh5.16.1.p0.3/lib/hue/apps/hbase/src/hbase/api.py", line 54, in query
    raise PopupException(_("Api Error: %s") % error_msg)
PopupException: Api Error: timed out

d740a288c787eb420ff498c0ce108e27.png

2

异常分析

1.首先我们查看Hue配置中关于HBase Thrift的默认配置:

[root@ip-172-31-13-38 hue]#vim /opt/cloudera/parcels/CDH/lib/hue/apps/hbase/src/hbase/conf.py
THRIFT_TRANSPORT = Config(
  key="thrift_transport",
  default="framed",
  help=_t("'framed' is used to chunk up responses, which is useful when used in conjunction with the nonblocking server in Thrift."
       "'buffered' used to be the default of the HBase Thrift Server."),
  type=str
)

8b51b3e42081da4ba02c12458a340afc.png

可以看到Hue中使用默认的模式framed。

2.回到Cloudera Manager上点击HBase服务,然后进入Thrift的配置页。

be90dcefd4ede06b36c52cddad8a1677.png

可以看到HBase Thrift的framed模式并未勾选,说明HBase Thrift使用的是buffered模式,这与Hue的默认模式是不匹配的。所以导致通过Hue访问HBase服务异常报错API Error。

注意:查看上图hbase.regionserver.thrift.server.type该参数的服务类型,一共三项,根据CM对hbase.regionserver.thrift.framed的解释“使用 THsHaServer 或 TNonblockingServer 时,无论此配置值如何,始终使用framed传输。”而hbase.regionserver.thrift.server.type该参数的默认值是TThreadPoolServer恰好使用的不是framed。

3

问题解决

1.在Hue的配置hue_safety_valve.ini 的 Hue 服务高级配置代码段(安全阀)中增加以下配置:

[hbase]
thrift_transport=buffered

dff94f8b5ce671771b06eea2b3e8c043.png

2.保存更改,然后回到Cloudera Manager主页重启Hue服务,该过程省略。

3.重新登录Hue并访问HBase。

ec1a71e50aaa0ad616c34a882b0bec1a.png

已经可以正常访问HBase,问题解决。

4

问题总结

1.从CDH5.15开始Hue的默认配置中THRIFT_TRANSPORT为framed,而HBase Thrift中的默认配置却为buffered,所以导致Hue访问HBase服务失败。

2.使用以下三种方法中任意一种可以解决该问题:

    a)在hue_safety_valve.ini中增加以下内容:

[hbase]
thrift_transport=buffered

这也是本文使用的方法。

    b)修改

/opt/cloudera/parcels/CDH/lib/hue/apps/hbase/src/hbase/conf.py

中的THRIFT_TRANSPORT的默认配置为buffered。

    c)通过Cloudera Manager将HBase Thrift的配置项hbase.regionserver.thrift.server.type修改为TNonblockingServer,这样HBase会使用framed的方式进行传输,可以与Hue中的默认配置保持一致。

参考:

https://github.com/cloudera/hue/issues/702https://clairvoyant.zendesk.com/hc/en-us/articles/360016421713-Hue-to-Hbase-not-workinghttps://yq.aliyun.com/ask/238832

提示:代码块部分可以左右滑动查看噢

为天地立心,为生民立命,为往圣继绝学,为万世开太平。

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。

推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。

a2be1b5efa10cddd741ae6c882815ccb.gif

原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值