场景: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 支持请求。 Microsoft Azure 订阅中带有对订阅管理和计费支持的访问权限,技术支持通过 Azure 支持计划之一提供。