Scenariusz: BindException — adres już używany w usłudze Azure HDInsight

W tym artykule opisano kroki rozwiązywania problemów i możliwe rozwiązania problemów podczas interakcji z klastrami usługi Azure HDInsight.

Problem

Nie można ukończyć operacji ponownego uruchamiania na serwerze regionu Apache HBase. region-server.log W katalogu w /var/log/hbase węzłach procesu roboczego, w których uruchomienie serwera regionu kończy się niepowodzeniem, może zostać wyświetlony komunikat o błędzie podobny do następującego:

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
...

Przyczyna

Ponowne uruchamianie serwerów regionów bazy danych Apache HBase podczas intensywnej aktywności obciążenia. Poniżej przedstawiono, co dzieje się w tle, gdy użytkownik inicjuje operację ponownego uruchamiania na serwerze regionu HBase z poziomu interfejsu użytkownika apache Ambari:

  1. Agent ambari wysyła żądanie zatrzymania do serwera regionu.

  2. Agent Ambari czeka 30 sekund na bezpieczne zamknięcie serwera regionu

  3. Jeśli aplikacja będzie nadal łączyć się z serwerem regionu, serwer nie zostanie natychmiast zamknięty. Limit czasu 30 sekund wygasa przed zamknięciem.

  4. Po 30 sekundach agent Ambari wysyła polecenie force-kill (kill -9) do serwera regionu.

  5. Z powodu tego nagłego zamknięcia, mimo że proces serwera regionu zostaje zabity, port skojarzony z procesem może nie zostać zwolniony, co ostatecznie prowadzi do .AddressBindException

Rozwiązanie

Przed zainicjowaniem ponownego uruchomienia zmniejsz obciążenie serwerów regionów HBase. Warto również najpierw opróżnić wszystkie tabele. Aby uzyskać informacje na temat opróżniania tabel, zobacz HDInsight HBase: Jak poprawić czas ponownego uruchomienia klastra Apache HBase przez opróżnianie tabel.

Alternatywnie spróbuj ręcznie ponownie uruchomić serwery regionów w węzłach procesu roboczego przy użyciu następujących poleceń:

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"

Następne kroki

Jeśli nie widzisz problemu lub nie możesz go rozwiązać, odwiedź jeden z następujących kanałów, aby uzyskać dodatkową pomoc techniczną: