你当前正在访问 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
并确认它是区域服务器进程。
解决方法
在给定的群集的所有节点上安装 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.net
。导航到“HBase”->“配置”->“高级”->“高级
hbase-env configs
”,并将变量JAVA_HOME
更改为export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
。 保存配置更改。[可选但建议] 刷新群集上的所有表。
同样在 Ambari UI 中,重启所有需要重启的 HBase 服务。
群集进入稳定状态可能需要几分钟到长达一小时的时间,具体取决于群集上的数据。 若要确认群集已达到稳定状态,可以通过刷新页面来检查 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 支持计划之一提供。