场景:Azure HDInsight Apache HBase 群集中区域服务器上的 CPU 使用率居高不下

本文介绍在与 Azure HDInsight 群集交互时出现的问题的故障排除步骤和可能的解决方法。

问题

Apache HBase 区域服务器进程开始占用接近 200% 的 CPU 使用率,导致 HBase Master 进程中激发警报,并且群集无法以完整容量正常运行。

原因

如果运行的是 HBase 群集 v3.4,则你可能遇到了将 JDK 升级到版本 1.7.0 _151 后出现的一个 bug。 我们看到的故障表现是,区域服务器进程开始占用近 200% 的 CPU。 若要验证,请运行 top 命令;如果进程占用了接近 200% 的 CPU,请运行 ps -aux | grep 来获取其 pid,并确认它是否为区域服务器进程。

解决

  1. 在群集的所有节点上按如下所示安装 JDK 1.8:

    • 运行脚本操作 https://raw.githubusercontent.com/Azure/hbase-utils/master/scripts/upgradetojdk18allnodes.sh。 确保选择在所有节点上运行的选项。

    • 或者,可以登录到每个节点并运行命令 sudo add-apt-repository ppa:openjdk-r/ppa -y && sudo apt-get -y update && sudo apt-get install -y openjdk-8-jdk

  2. 转到 Ambari UI - https://<clusterdnsname>.azurehdinsight.cn

  3. 导航到“HBase”->“配置”->“高级”->“高级 hbase-env configs”,并将变量 JAVA_HOME 更改为 export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64。 保存配置更改。

  4. [可选但建议] 刷新群集上的所有表

  5. 同样在 Ambari UI 中,重启所有需要重启的 HBase 服务。

  6. 群集进入稳定状态可能需要几分钟到长达一小时的时间,具体取决于群集上的数据。 若要确认群集已达到稳定状态,可刷新页面来检查 Ambari 中的 HMaster UI(确保所有区域服务器都处于活动状态)。 或者,可以从头节点运行 HBase Shell,然后执行 status 命令。

若要验证升级是否成功,请检查是否已使用适当的 Java 版本启动相关的 HBase 进程 - 例如,按如下所示检查区域服务器:

ps -aux | grep regionserver, and verify the version like '''/usr/lib/jvm/java-8-openjdk-amd64/bin/java

后续步骤

如果你的问题未在本文中列出,或者无法解决问题,请访问以下渠道之一获取更多支持:

  • 如果需要更多帮助,可以从 Azure 门户提交支持请求。 从菜单栏中选择“支持” ,或打开“帮助 + 支持” 中心。