场景: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
,并确认它是否为区域服务器进程。
解决
在群集的所有节点上按如下所示安装 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
。
转到 Ambari UI -
https://<clusterdnsname>.azurehdinsight.cn
。导航到“HBase”->“配置”->“高级”->“高级
hbase-env configs
”,并将变量JAVA_HOME
更改为export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
。 保存配置更改。[可选但建议] 刷新群集上的所有表。
同样在 Ambari UI 中,重启所有需要重启的 HBase 服务。
群集进入稳定状态可能需要几分钟到长达一小时的时间,具体取决于群集上的数据。 若要确认群集已达到稳定状态,可刷新页面来检查 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 门户提交支持请求。 从菜单栏中选择“支持” ,或打开“帮助 + 支持” 中心。