Uzyskiwanie dostępu do dzienników aplikacji platformy YARN w usłudze Apache Hadoop w usłudze HDInsight opartej na systemie Linux

Dowiedz się, jak uzyskać dostęp do dzienników aplikacji Apache Hadoop YARN (jeszcze innego negocjatora zasobów) w klastrze Apache Hadoop w usłudze Azure HDInsight.

Co to jest apache YARN?

Usługa YARN obsługuje wiele modeli programowania (Apache Hadoop MapReduce jest jednym z nich) przez oddzielenie zarządzania zasobami od planowania/monitorowania aplikacji. Usługa YARN używa globalnego ResourceManager (RM), węzła węzła roboczego NodeManagers (NMs ) i aplikacji ApplicationMasters (AMs). Serwer AM dla aplikacji negocjuje zasoby (procesor CPU, pamięć, dysk, sieć) na potrzeby uruchamiania aplikacji za pomocą menedżera zasobów. Program RM współpracuje z maszynami NM w celu udzielenia tych zasobów, które są przyznawane jako kontenery. Serwer główny aplikacji jest odpowiedzialny za śledzenie postępu kontenerów przypisanych do niego przez menedżera zasobów. Aplikacja może wymagać wielu kontenerów w zależności od charakteru aplikacji.

Każda aplikacja może składać się z wielu prób aplikacji. Jeśli aplikacja zakończy się niepowodzeniem, może zostać ponowiona próba. Każda próba jest uruchamiana w kontenerze. W sensie kontener udostępnia kontekst podstawowej jednostki pracy wykonywanej przez aplikację YARN. Wszystkie prace wykonywane w kontekście kontenera są wykonywane w pojedynczym węźle roboczym, na którym podano kontener. Zobacz Hadoop: pisanie aplikacji YARN lub Apache Hadoop YARN , aby uzyskać więcej informacji.

Aby skalować klaster w celu zapewnienia większej przepływności przetwarzania, możesz użyć skalowania automatycznego lub skalowania klastrów ręcznie przy użyciu kilku różnych języków.

Serwer osi czasu usługi YARN

Serwer osi czasu usługi Apache Hadoop YARN zawiera ogólne informacje na temat ukończonych aplikacji

Serwer osi czasu usługi YARN zawiera następujący typ danych:

  • Identyfikator aplikacji, unikatowy identyfikator aplikacji
  • Użytkownik, który uruchomił aplikację
  • Informacje na temat prób ukończenia aplikacji
  • Kontenery używane przez dowolną próbę aplikacji

Aplikacje i dzienniki usługi YARN

Dzienniki aplikacji (i skojarzone dzienniki kontenerów) mają kluczowe znaczenie podczas debugowania problematycznych aplikacji Hadoop. Usługa YARN zapewnia miłą strukturę do zbierania, agregowania i przechowywania dzienników aplikacji za pomocą agregacji dzienników.

Funkcja agregacji dziennika sprawia, że uzyskiwanie dostępu do dzienników aplikacji jest bardziej deterministyczne. Agreguje dzienniki we wszystkich kontenerach w węźle procesu roboczego i przechowuje je jako jeden zagregowany plik dziennika na węzeł procesu roboczego. Po zakończeniu działania aplikacji dziennik jest przechowywany w domyślnym systemie plików. Aplikacja może używać setek lub tysięcy kontenerów, ale dzienniki dla wszystkich kontenerów uruchamianych w jednym węźle roboczym są zawsze agregowane do jednego pliku. Dlatego istnieje tylko jeden dziennik na węzeł roboczy używany przez aplikację. Agregacja dzienników jest domyślnie włączona w klastrach usługi HDInsight w wersji 3.0 lub nowszej. Zagregowane dzienniki znajdują się w domyślnym magazynie klastra. Następująca ścieżka to ścieżka systemu plików HDFS do dzienników:

/app-logs/<user>/logs/<applicationId>

W ścieżce jest nazwą użytkownika, user który uruchomił aplikację. Jest applicationId to unikatowy identyfikator przypisany do aplikacji przez YARN RM.

Zagregowane dzienniki nie są bezpośrednio czytelne, ponieważ są zapisywane w formacie binarnym TFileindeksowanym przez kontener. Użyj dzienników usługi YARN ResourceManager lub narzędzi interfejsu wiersza polecenia, aby wyświetlić te dzienniki jako zwykły tekst dla interesujących aplikacji lub kontenerów.

Dzienniki usługi Yarn w klastrze ESP

Do niestandardowego mapred-site elementu w systemie Ambari należy dodać dwie konfiguracje.

  1. W przeglądarce internetowej przejdź do https://CLUSTERNAME.azurehdinsight.netlokalizacji , gdzie CLUSTERNAME jest nazwą klastra.

  2. W interfejsie użytkownika systemu Ambari przejdź do witryny MapReduce2>Configs>Advanced>Custom mapred-site.

  3. Dodaj jeden z następujących zestawów właściwości:

    Ustaw wartość 1

    mapred.acls.enabled=true
    mapreduce.job.acl-view-job=*
    

    Zestaw 2

    mapreduce.job.acl-view-job=<user1>,<user2>,<user3>
    
  4. Zapisz zmiany i uruchom ponownie wszystkie objęte usługi.

Narzędzia interfejsu wiersza polecenia usługi YARN

  1. Użyj polecenia ssh, aby nawiązać połączenie z klastrem. Zmodyfikuj następujące polecenie, zastępując ciąg CLUSTERNAME nazwą klastra, a następnie wprowadź polecenie:

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  2. Wyświetl listę wszystkich identyfikatorów aplikacji aktualnie uruchomionych aplikacji usługi Yarn za pomocą następującego polecenia:

    yarn top
    

    Zanotuj APPLICATIONID identyfikator aplikacji z kolumny, której dzienniki mają zostać pobrane.

    YARN top - 18:00:07, up 19d, 0:14, 0 active users, queue(s): root
    NodeManager(s): 4 total, 4 active, 0 unhealthy, 0 decommissioned, 0 lost, 0 rebooted
    Queue(s) Applications: 2 running, 10 submitted, 0 pending, 8 completed, 0 killed, 0 failed
    Queue(s) Mem(GB): 97 available, 3 allocated, 0 pending, 0 reserved
    Queue(s) VCores: 58 available, 2 allocated, 0 pending, 0 reserved
    Queue(s) Containers: 2 allocated, 0 pending, 0 reserved
    
                      APPLICATIONID USER             TYPE      QUEUE   #CONT  #RCONT  VCORES RVCORES     MEM    RMEM  VCORESECS    MEMSECS %PROGR       TIME NAME
     application_1490377567345_0007 hive            spark  thriftsvr       1       0       1       0      1G      0G    1628407    2442611  10.00   18:20:20 Thrift JDBC/ODBC Server
     application_1490377567345_0006 hive            spark  thriftsvr       1       0       1       0      1G      0G    1628430    2442645  10.00   18:20:20 Thrift JDBC/ODBC Server
    
  3. Te dzienniki można wyświetlić jako zwykły tekst, uruchamiając jedno z następujących poleceń:

    yarn logs -applicationId <applicationId> -appOwner <user-who-started-the-application>
    yarn logs -applicationId <applicationId> -appOwner <user-who-started-the-application> -containerId <containerId> -nodeAddress <worker-node-address>
    

    <Określ identyfikator applicationId>, <user-who-started-the-application>, <containerId> i <worker-node-address> podczas uruchamiania tych poleceń.

Inne przykładowe polecenia

  1. Pobierz dzienniki kontenerów usługi Yarn dla wszystkich wzorców aplikacji za pomocą następującego polecenia. Ten krok tworzy plik dziennika o nazwie amlogs.txt w formacie tekstowym.

    yarn logs -applicationId <application_id> -am ALL > amlogs.txt
    
  2. Pobierz dzienniki kontenera usługi Yarn tylko dla najnowszego wzorca aplikacji za pomocą następującego polecenia:

    yarn logs -applicationId <application_id> -am -1 > latestamlogs.txt
    
  3. Pobierz dzienniki kontenera usługi YARN dla dwóch pierwszych wzorców aplikacji za pomocą następującego polecenia:

    yarn logs -applicationId <application_id> -am 1,2 > first2amlogs.txt
    
  4. Pobierz wszystkie dzienniki kontenera usługi Yarn za pomocą następującego polecenia:

    yarn logs -applicationId <application_id> > logs.txt
    
  5. Pobierz dziennik kontenera usługi yarn dla określonego kontenera za pomocą następującego polecenia:

    yarn logs -applicationId <application_id> -containerId <container_id> > containerlogs.txt
    

Interfejs użytkownika usługi YARN ResourceManager

Interfejs użytkownika usługi YARN ResourceManager jest uruchamiany w węźle głównym klastra. Dostęp do niego jest uzyskiwany za pośrednictwem internetowego interfejsu użytkownika systemu Ambari. Aby wyświetlić dzienniki usługi YARN, wykonaj następujące czynności:

  1. W przeglądarce internetowej przejdź do https://CLUSTERNAME.azurehdinsight.netadresu . Zastąp CLUSTERNAME nazwą klastra usługi HDInsight:

  2. Z listy usług po lewej stronie wybierz pozycję YARN.

    Apache Ambari Yarn service selected.

  3. Z listy rozwijanej Szybkie linki wybierz jeden z węzłów głównych klastra, a następnie wybierz pozycję ResourceManager Log.

    Apache Ambari Yarn quick links.

    Zostanie wyświetlona lista linków do dzienników usługi YARN.

Następne kroki