你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
场景:BindException - 地址已在 Azure HDInsight 中使用
本文介绍在与 Azure HDInsight 群集交互时出现的问题的故障排除步骤和可能的解决方法。
问题
针对 Apache HBase 区域服务器执行的重启操作无法完成。 从区域服务器启动失败的工作器节点上 /var/log/hbase
目录中的 region-server.log
,可能会看到如下错误消息:
Caused by: java.net.BindException: Problem binding to /10.2.0.4:16020 : Address already in use
...
Caused by: java.net.BindException: Address already in use
...
原因
在高工作负荷活动期间重启 Apache HBase 区域服务器。 以下是当用户通过 Apache Ambari UI 在 HBase 区域服务器上发起重启操作时,后台发生的情况:
Ambari 代理向区域服务器发送停止请求。
Ambari 代理等待 30 秒让区域服务器正常关闭
如果应用程序继续与区域服务器进行连接,该服务器不会立即关闭。 在关闭之前,30 秒超时就会到期。
30 秒之后,Ambari 代理向区域服务器发送强制终止 (
kill -9
) 命令。由于此关闭很突然,尽管区域服务器进程已被终止,但与该进程关联的端口可能还没有释放,这最终会导致
AddressBindException
。
解决方法
在发起重启之前,减少 HBase 区域服务器上的负载。 另外,最好是先刷新所有表。 有关如何刷新表的参考信息,请参阅 HDInsight HBase:如何通过刷新表来改善 Apache HBase 群集重启时间。
或者,尝试使用以下命令,手动重启工作器节点上的区域服务器:
sudo su - hbase -c "/usr/hdp/current/hbase-regionserver/bin/hbase-daemon.sh stop regionserver"
sudo su - hbase -c "/usr/hdp/current/hbase-regionserver/bin/hbase-daemon.sh start regionserver"
后续步骤
如果你的问题未在本文中列出,或者无法解决问题,请访问以下渠道之一获取更多支持:
通过 Azure 社区支持获取 Azure 专家的解答。
联系 @AzureSupport,这是用于改进客户体验的官方 Microsoft Azure 帐户。 它可以将 Azure 社区成员连接到适当的资源,为他们提供解答、支持和专家建议。
如果需要更多帮助,可以从 Azure 门户提交支持请求。 从菜单栏中选择“支持”,或打开“帮助 + 支持”中心。 有关更多详细信息,请参阅如何创建 Azure 支持请求。 Microsoft Azure 订阅中带有对订阅管理和计费支持的访问权限,技术支持通过 Azure 支持计划之一提供。