共用方式為


情節: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 區域伺服器上起始重新開機作業時,幕後會發生下列情況:

  1. Ambari 代理程式會傳送停止要求給區域伺服器。

  2. Ambari 代理程式會等候 30 秒的時間,讓區域伺服器正常關機

  3. 如果您的應用程式繼續與區域伺服器連線,則伺服器不會立即關機。 超過 30 秒逾時才會關機。

  4. 30 秒後,Ambari 代理程式會傳送強制終止 (kill -9) 命令給區域伺服器。

  5. 由於突然關機之故,儘管區域伺服器處理序已終止,也可能不會釋放與處理序建立關聯的連接埠,最終導致 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 支援方案提供。