You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

通过Beeline连接HBase表时HiveServer2报类缺失错误求助

解决HiveServer2查询HBase表时的com/yammer/metrics/core/MetricsRegistry缺失错误

嘿,我来帮你搞定这个问题!从你贴的报错和HiveServer2日志来看,导致查询失败的核心原因很明确——那台出问题的HiveServer2节点里,找不到Yammer Metrics核心类的jar包,这个jar是HBase的MapReduce工具类必须依赖的组件。至于日志里提到的hbase-prefix-tree缺失只是个警告,和这次的查询失败没关系哈。

具体修复步骤:

  • 对比正常节点和故障节点的jar包
    先登录那台能正常查询的HiveServer2节点,去Hive或者HBase的lib目录(比如$HIVE_HOME/lib/$HBASE_HOME/lib/)找一下类似metrics-core-*.jar的文件,这就是我们要找的Yammer Metrics核心jar包;再去故障节点的相同路径下看看,十有八九是这个jar包没了。
  • 复制缺失的jar包到故障节点
    把正常节点上的metrics-core-*.jar复制到故障节点的Hive lib目录,保险起见也同步一份到HBase的lib目录,确保依赖完整。
  • 重启故障节点的HiveServer2
    用命令重启服务就行,比如:
    # 先停掉服务
    hive --service hiveserver2 stop
    # 后台启动并指定日志文件
    nohup hive --service hiveserver2 > /var/log/hive/hiveserver2.log 2>&1 &
    
    要是你们用Ambari或者Cloudera Manager这类集群管理工具,直接在界面上重启更方便。
  • 验证修复结果
    用Beeline重新连那台故障节点的HiveServer2,跑一遍之前报错的查询,确认能不能正常执行啦。

额外小贴士:

  • 为了以后不再出现这种节点间依赖不一致的问题,建议用集群配置工具(比如Ansible)同步所有HiveServer2节点的lib目录,或者用Ambari/CM这类平台统一管理Hive和HBase的依赖版本,这样就不用手动一个个节点去弄啦。
  • 至于日志里的缺少PrefixTreeCodec的jar包警告,如果你们的HBase集群没用到PrefixTree编码的列族,完全可以忽略;要是需要用这个编码,就把hbase-prefix-tree-*.jar同步到所有节点的HBase lib目录就行。

内容的提问来源于stack exchange,提问作者Praveen Prakasan

火山引擎 最新活动