Udostępnij za pośrednictwem


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 roboczych, 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 na 30 sekund, aż serwer regionu zostanie bezpiecznie zamknięty

  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. Ze względu na to nagłe zamknięcie, 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 sposobu 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 problem nie został wyświetlony lub nie możesz go rozwiązać, odwiedź jeden z następujących kanałów, aby uzyskać więcej pomocy technicznej:

  • Uzyskaj odpowiedzi od ekspertów platformy Azure za pośrednictwem pomocy technicznej społeczności platformy Azure.

  • Nawiąż połączenie z @AzureSupport — oficjalnym kontem platformy Microsoft Azure, aby ulepszyć środowisko klienta. Łączenie społeczności platformy Azure z odpowiednimi zasobami: odpowiedziami, pomocą techniczną i ekspertami.

  • Jeśli potrzebujesz dodatkowej pomocy, możesz przesłać wniosek o pomoc techniczną w witrynie Azure Portal. Wybierz pozycję Pomoc techniczna na pasku menu lub otwórz centrum Pomoc i obsługa techniczna . Aby uzyskać bardziej szczegółowe informacje, zobacz How to create an pomoc techniczna platformy Azure request (Jak utworzyć żądanie pomoc techniczna platformy Azure). Dostęp do pomocy technicznej dotyczącej zarządzania subskrypcjami i rozliczeniami jest oferowany w ramach subskrypcji platformy Microsoft Azure, a pomoc techniczna jest świadczona w ramach jednego z planów pomocy technicznej platformy Azure.