Freigeben über


Problembehandlung für Apache Hadoop YARN mit Azure HDInsight

Lernen Sie die wichtigsten Probleme und ihre Lösungen bei der Arbeit mit Apache Hadoop YARN-Nutzlasten in Apache Ambari kennen.

Wie erstelle ich eine neue YARN-Warteschlange in einem Cluster?

Schritte zur Behebung

Erstellen Sie mit den folgenden Schritten in Ambari eine neue YARN-Warteschlange, und teilen Sie die Kapazitätszuordnung dann gleichmäßig auf alle Warteschlangen auf.

In diesem Beispiel wird die Kapazität zweier vorhandener Warteschlangen (default und thriftsvr) von 50% in 25% geändert, sodass die neue Warteschlange (spark) 50% Kapazität bekommt.

Warteschlange Capacity Maximale Kapazität
default 25% 50%
thrftsvr 25% 50%
spark 50% 50%
  1. Wählen Sie das Ambari-Ansichten-Symbol und dann das Gittermuster. Wählen Sie als Nächstes YARN Queue Manager.

    Apache Ambari-Dashboard: YARN Queue Manager.

  2. Wählen Sie die Warteschlange default aus.

    Apache Ambari YARN – Auswählen der Warteschlange „default“.

  3. Ändern Sie für die default-Warteschlange capacity von 50% in 25%. Ändern Sie für die thriftsvr-Warteschlange capacity in 25%.

    Ändern der Kapazität in 25% für die Warteschlangen „default“ und „thriftsvr“.

  4. Wählen Sie zum Erstellen einer neuen Warteschlange Add Queue.

    Apache Ambari YARN-Dashboard – Hinzufügen einer Warteschlange.

  5. Benennen Sie die neue Warteschlange.

    Apache Ambari YARN-Dashboard – Benennen einer Warteschlange.

  6. Lassen Sie die capacity-Werte auf 50%, und wählen Sie die Schaltfläche Actions.

    Apache Ambari YARN – Auswählen der Aktion.

  7. Wählen Sie Save and Refresh Queues.

    Wählen Sie Save and Refresh Queues.

Diese Änderungen werden sofort auf der YARN-Scheduler-Benutzeroberfläche angezeigt.

Weiterführende Themen

Wie lade ich YARN-Protokolle aus einem Cluster herunter?

Schritte zur Behebung

  1. Stellen Sie mit einem Secure Shell-Client (SSH) eine Verbindung mit dem HDInsight-Cluster her. Weitere Informationen finden Sie unter Zusätzliche Lektüre.

  2. Um alle Anwendungs-IDs der aktuell ausgeführten YARN-Anwendungen aufzulisten, verwenden Sie folgenden Befehl:

    yarn top
    

    Die IDs werden in der Spalte APPLICATIONID aufgelistet. Sie können Protokolle aus der Spalte APPLICATIONID herunterladen.

    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. Um YARN-Containerprotokolle für alle Anwendungsmaster herunterzuladen, verwenden Sie folgenden Befehl:

    yarn logs -applicationIdn logs -applicationId <application_id> -am ALL > amlogs.txt
    

    Dieser Befehl erstellt eine Protokolldatei namens „amlogs.txt“.

  4. Um YARN-Containerprotokolle nur für den neuesten Anwendungsmaster herunterzuladen, verwenden Sie folgenden Befehl:

    yarn logs -applicationIdn logs -applicationId <application_id> -am -1 > latestamlogs.txt
    

    Dieser Befehl erstellt eine Protokolldatei namens „latestamlogs.txt“.

  5. Um YARN-Containerprotokolle für die ersten beiden Anwendungsmaster herunterzuladen, verwenden Sie folgenden Befehl:

    yarn logs -applicationIdn logs -applicationId <application_id> -am 1,2 > first2amlogs.txt
    

    Dieser Befehl erstellt eine Protokolldatei namens „first2amlogs.txt“.

  6. Um alle YARN-Containerprotokolle herunterzuladen, verwenden Sie folgenden Befehl:

    yarn logs -applicationIdn logs -applicationId <application_id> > logs.txt
    

    Dieser Befehl erstellt eine Protokolldatei namens „logs.txt“.

  7. Um das YARN-Containerprotokoll für einen bestimmten Container herunterzuladen, verwenden Sie folgenden Befehl:

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

    Dieser Befehl erstellt eine Protokolldatei namens „containerlogs.txt“.

Zusätzliche Lektüre

Wie überprüfe ich die Informationen der Yarn-Anwendungsdiagnose?

Die Diagnose in der Yarn-Benutzeroberfläche ist eine Funktion, mit der Sie den Status und die Protokolle Ihrer auf Yarn laufenden Anwendungen anzeigen können. Die Diagnose hilft Ihnen bei der Problembehandlung und Fehlersuche in Ihren Anwendungen sowie bei der Überwachung ihrer Leistung und Ressourcennutzung.

Um die Diagnose einer bestimmten Anwendung anzuzeigen, können Sie auf die Anwendungs-ID in der Anwendungsliste klicken. Auf der Seite mit den Anwendungsdetails sehen Sie auch eine Liste aller Versuche, die Anwendung auszuführen. Sie können auf jeden Versuch klicken, um weitere Details anzuzeigen, z. B. die ID des Versuchs, die Container-ID, die Knoten-ID, die Startzeit, die Endzeit und die Diagnose.

Screenshot der Yarn Anwendungsdiagnose.

Wie behebe ich allgemeine YARN-Probleme?

Yarn-Benutzeroberfläche wird nicht geladen

Wenn die YARN-Benutzeroberfläche nicht geladen wird oder nicht erreichbar ist und „HTTP-Fehler 502.3 – Fehlerhaftes Gateway“ zurückgegeben wird, ist der Resource Manager-Dienst mit hoher Wahrscheinlichkeit fehlerhaft. Gehen Sie folgendermaßen vor, um das Problem zu entschärfen:

  1. Wechseln Sie zu Ambari UI>YARN>SUMMARY, und überprüfen Sie, ob sich nur der aktive Resource Manager-Dienst im Zustand Started (Gestartet) befindet. Versuchen Sie andernfalls, den fehlerhaften oder beendeten Resource Manager-Dienst neu zu starten.
  2. Wenn Schritt 1 das Problem nicht lösen konnte, stellen Sie eine SSH-Verbindung mit dem aktiven Resource Manager-Hauptknoten her, und überprüfen Sie den Garbage Collection-Status mithilfe von jstat -gcutil <Resource Manager pid> 1000 100. Wenn Sie eine hohe Zunahme von FGCT innerhalb weniger Sekunden feststellen, deutet dies darauf hin, dass der Resource Manager-Dienst in Full GC ausgelastet ist und die anderen Anforderungen nicht verarbeiten kann.
  3. Navigieren Sie zu Ambari UI>YARN>CONFIGS>Advanced und erhöhen Sie Resource Manager java heap size.
  4. Starten Sie die erforderlichen Dienste in Ambari UI neu.

Beide Ressourcenmanager befinden sich im Standbymodus

  1. Überprüfen Sie das Resource Manager-Protokoll, um zu sehen, ob es einen ähnlichen Fehler gibt.
Service RMActiveServices failed in state STARTED; cause: org.apache.hadoop.service.ServiceStateException: com.google.protobuf.InvalidProtocolBufferException: Could not obtain block: BP-452067264-10.0.0.16-1608006815288:blk_1074235266_494491 file=/yarn/node-labels/nodelabel.mirror
  1. Wenn es den Fehler gibt, überprüfen Sie, ob einige Dateien in der Replikation vorhanden sind oder ob im HDFS Blöcke fehlen. Sie können hdfs fsck hdfs://mycluster/ ausführen.

  2. Führen Sie hdfs fsck hdfs://mycluster/ -delete aus, um das HDFS zwangsweise zu bereinigen und das RM-Standby-Problem zu beheben. Führen Sie alternativ PatchYarnNodeLabel auf einem der Hauptknoten aus, um den Cluster zu patchen.

Nächste Schritte

Wenn Ihr Problem nicht aufgeführt ist oder Sie es nicht lösen können, besuchen Sie einen der folgenden Kanäle, um weitere Unterstützung zu erhalten:

  • Nutzen Sie den Azure-Communitysupport, um Antworten von Azure-Experten zu erhalten.

  • Setzen Sie sich mit @AzureSupport in Verbindung, dem offiziellen Microsoft Azure-Konto zum Verbessern der Kundenfreundlichkeit. Verbinden der Azure-Community mit den richtigen Ressourcen: Antworten, Support und Experten.

  • Sollten Sie weitere Unterstützung benötigen, senden Sie eine Supportanfrage über das Azure-Portal. Wählen Sie dazu auf der Menüleiste die Option Support aus, oder öffnen Sie den Hub Hilfe und Support. Ausführlichere Informationen hierzu finden Sie unter Erstellen einer Azure-Supportanfrage. Zugang zu Abonnementverwaltung und Abrechnungssupport ist in Ihrem Microsoft Azure-Abonnement enthalten. Technischer Support wird über einen Azure-Supportplan bereitgestellt.