Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano kroki rozwiązywania problemów i możliwe rozwiązania problemów związanych z usługą Zookeepers w klastrach usługi Azure HDInsight.
Objawy
- Oba menedżerowie zasobów przechodzą do trybu wstrzymania
- Węzły nazw są w trybie oczekiwania
- Zadania Spark, Hive i Yarn lub zapytania Hive kończą się niepowodzeniem z powodu błędów połączenia Zookeeper.
- Demony LLAP nie uruchamiają się na bezpiecznych klastrach Spark lub na bezpiecznym interaktywnym klastrze Hive.
Przykładowy dziennik
Może zostać wyświetlony komunikat o błędzie podobny do dzienników yarn (/var/log/hadoop-yarn/yarn/yarn-yarn*.log w węzłach głównych):
2020-05-05 03:17:18.3916720|Lost contact with Zookeeper. Transitioning to standby in 10000 ms if connection is not reestablished.
Message
2020-05-05 03:17:07.7924490|Received RMFatalEvent of type STATE_STORE_FENCED, caused by org.apache.zookeeper.KeeperException$NoAuthException: KeeperErrorCode = NoAuth
...
2020-05-05 03:17:08.3890350|State store operation failed
2020-05-05 03:17:08.3890350|Transitioning to standby state
Powiązane problemy
- Usługi wysokiej dostępności, takie jak Yarn, Name Node i Livy, mogą z wielu powodów spaść.
- Potwierdź z dzienników, że są związane z połączeniami Zookeeper
- Upewnij się, że problem występuje wielokrotnie (nie używaj tych rozwiązań w przypadku jednorazowych przypadków)
- Zadania mogą tymczasowo zakończyć się niepowodzeniem z powodu problemów z połączeniem usługi Zookeeper
Typowe przyczyny niepowodzenia usługi Zookeeper
- Wysokie użycie procesora CPU na serwerach zookeeper
- W interfejsie użytkownika systemu Ambari, jeśli na serwerach Zookeeper widać blisko 100% stałego zużycia CPU, sesje Zookeeper otwarte w tym czasie mogą wygasnąć i zakończyć się błędem timeout.
- Klienci zookeeper zgłaszają częste przekroczenia limitu czasu
- W dziennikach usługi Resource Manager, NameNode i innych widoczne są częste przekroczenia limitu czasu połączenia klienta.
- Może to spowodować utratę kworum, częste awarie i inne problemy
Sprawdź stan Zookeepera
- Znajdź serwery Zookeeper z pliku /etc/hosts lub z interfejsu użytkownika Ambari.
- Uruchom następujące polecenie
-
echo stat | nc <ZOOKEEPER_HOST_IP> 2181
(lub 2182) - Port 2181 to wystąpienie usługi Apache Zookeeper
- Port 2182 jest używany przez zookeeper HDInsight w celu zapewnienia wysokiej dostępności dla usług, które nie są natywnie przygotowane do wysokiej dostępności.
- Jeśli polecenie nie wyświetla żadnych danych wyjściowych, oznacza to, że serwery zookeeper nie są uruchomione
- Jeśli serwery są uruchomione, wynik zawiera statystyki połączeń klienta i inne statystyki.
-
Zookeeper version: 3.4.6-8--1, built on 12/05/2019 12:55 GMT
Clients:
/10.2.0.57:50988[1](queued=0,recved=715,sent=715)
/10.2.0.57:46632[1](queued=0,recved=138340,sent=138347)
/10.2.0.34:14688[1](queued=0,recved=264653,sent=353420)
/10.2.0.52:49680[1](queued=0,recved=134812,sent=134814)
/10.2.0.57:50614[1](queued=0,recved=19812,sent=19812)
/10.2.0.56:35034[1](queued=0,recved=2586,sent=2586)
/10.2.0.52:63982[1](queued=0,recved=72215,sent=72217)
/10.2.0.57:53024[1](queued=0,recved=19805,sent=19805)
/10.2.0.57:45126[1](queued=0,recved=19621,sent=19621)
/10.2.0.56:41270[1](queued=0,recved=1348743,sent=1348788)
/10.2.0.53:59097[1](queued=0,recved=72215,sent=72217)
/10.2.0.56:41088[1](queued=0,recved=788,sent=802)
/10.2.0.34:10246[1](queued=0,recved=19575,sent=19575)
/10.2.0.56:40944[1](queued=0,recved=717,sent=717)
/10.2.0.57:45466[1](queued=0,recved=19861,sent=19861)
/10.2.0.57:59634[0](queued=0,recved=1,sent=0)
/10.2.0.34:14704[1](queued=0,recved=264622,sent=353355)
/10.2.0.57:42244[1](queued=0,recved=49245,sent=49248)
Latency min/avg/max: 0/3/14865
Received: 238606078
Sent: 239139381
Connections: 18
Outstanding: 0
Zxid: 0x1004f99be
Mode: follower
Node count: 133212
Obciążenie procesora wzrasta co godzinę
- Zaloguj się do serwera zookeeper i sprawdź /etc/crontab
- Jeśli w tej chwili są uruchomione jakiekolwiek zadania godzinowe, należy losować czas rozpoczęcia na różnych serwerach Zookeeper.
Przeczyszczanie starych migawek
- Zookeepers są skonfigurowane do automatycznego usuwania starych snapshotów
- Domyślnie są zachowywane ostatnie 30 migawek
- Liczba przechowywanych migawek kontrolowanych przez klucz konfiguracji
autopurge.snapRetainCount
. Tę właściwość można znaleźć w następujących plikach:-
/etc/zookeeper/conf/zoo.cfg
dla Zookeepera Hadoop -
/etc/hdinsight-zookeeper/conf/zoo.cfg
dla usługi Zookeeper w HDInsight
-
- Ustaw
autopurge.snapRetainCount
wartość 3 i uruchom ponownie serwery zookeeper- Konfigurację usługi Hadoop zookeeper można zaktualizować, a usługę można uruchomić ponownie za pomocą narzędzia Ambari
- Zatrzymywanie i ponowne uruchamianie usługi HDInsight zookeeper ręcznie
-
sudo lsof -i :2182
Udostępnia identyfikator procesu do zabicia sudo python /opt/startup_scripts/startup_hdinsight_zookeeper.py
-
- Nie przeczyszczaj migawek ręcznie — ręczne usuwanie migawek może spowodować utratę danych
CancelledKeyException w dzienniku serwera zookeeper nie wymaga czyszczenia migawki
- Wyjątek ten jest widoczny na serwerach zookeeper w plikach /var/log/zookeeper/zookeeper-zookeeper-* lub /var/log/hdinsight-zookeeper/zookeeper*
- Ten wyjątek zwykle oznacza, że klient nie jest już aktywny, a serwer nie może wysłać komunikatu
- Ten wyjątek wskazuje również, że klient Zookeepera przedwcześnie kończy sesje.
- Poszukaj innych objawów opisanych w tym dokumencie
Następne kroki
Jeśli nie widziałeś swojego problemu lub nie możesz go rozwiązać, odwiedź jeden z następujących kanałów, aby uzyskać dalszą pomoc:
- 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, zapoznaj się z Jak utworzyć zgłoszenie do pomocy technicznej 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.