你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

场景: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, pid 请运行 ps -aux | grep并确认它是区域服务器进程。

解决方法

  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.net

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

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

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

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

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

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

后续步骤

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

  • 通过 Azure 社区支持获取 Azure 专家的解答。

  • 联系 @AzureSupport,这是用于改进客户体验的官方 Microsoft Azure 帐户。 它可以将 Azure 社区成员连接到适当的资源,为他们提供解答、支持和专家建议。

  • 如果需要更多帮助,可以从 Azure 门户提交支持请求。 从菜单栏中选择“支持” ,或打开“帮助 + 支持” 中心。 有关更多详细信息,请参阅如何创建 Azure 支持请求。 Microsoft Azure 订阅中带有对订阅管理和计费支持的访问权限,技术支持通过 Azure 支持计划之一提供。