Få åtkomst till Apache Hadoop YARN-programloggar i Linux-baserat HDInsight

Lär dig hur du kommer åt loggarna för Apache Hadoop YARN-program (ännu en resursförhandlare) i ett Apache Hadoop-kluster i Azure HDInsight.

Vad är Apache YARN?

YARN stöder flera programmeringsmodeller (Apache Hadoop MapReduce är en av dem) genom att koppla bort resurshantering från programschemaläggning/övervakning. YARN använder en global ResourceManager (RM), nodeManagers (NMs) per arbetsnod och applicationmasters (AMs) per program. AM per program förhandlar om resurser (CPU, minne, disk, nätverk) för att köra programmet med RM. RM arbetar med NMs för att bevilja dessa resurser, som beviljas som containrar. AM ansvarar för att spåra förloppet för de containrar som tilldelats till den av RM. Ett program kan kräva många containrar beroende på programmets natur.

Varje program kan bestå av flera programförsök. Om ett program misslyckas kan det göras ett nytt försök. Varje försök körs i en container. På sätt och vis ger en container kontexten för grundläggande arbetsenhet som utförs av ett YARN-program. Allt arbete som utförs i kontexten för en container utförs på den enda arbetsnod som containern har angetts för. Mer information finns i Hadoop: Skriva YARN-program eller Apache Hadoop YARN .

Om du vill skala klustret för att stödja större dataflöde för bearbetning kan du använda Autoskalning eller Skala dina kluster manuellt med några olika språk.

YARN Timeline Server

Apache Hadoop YARN Timeline Server innehåller allmän information om slutförda program

YARN Timeline Server innehåller följande typ av data:

  • Program-ID, en unik identifierare för ett program
  • Användaren som startade programmet
  • Information om försök att slutföra programmet
  • De containrar som används av ett visst programförsök

YARN-program och -loggar

Programloggar (och tillhörande containerloggar) är viktiga vid felsökning av problematiska Hadoop-program. YARN tillhandahåller ett trevligt ramverk för att samla in, aggregera och lagra programloggar med Log Aggregation.

Log Aggregation-funktionen gör det mer deterministiskt att komma åt programloggar. Den aggregerar loggar över alla containrar på en arbetsnod och lagrar dem som en aggregerad loggfil per arbetsnod. Loggen lagras i standardfilsystemet när ett app har avslutats. Ditt program kan använda hundratals eller tusentals containrar, men loggar för alla containrar som körs på en enda arbetsnod aggregeras alltid till en enda fil. Så det finns bara en logg per arbetsnod som används av ditt program. Loggaggregering är aktiverat som standard för HDInsight-kluster version 3.0 och senare. Aggregerade loggar finns på standardlagringsplatsen för klustret. Följande sökväg är HDFS-sökvägen till loggarna:

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

I sökvägen user är namnet på den användare som startade programmet. applicationId är den unika identifierare som tilldelats ett program av YARN RM.

De aggregerade loggarna är inte direkt läsbara eftersom de skrivs i ett TFilebinärt format som indexeras av containern. Använd YARN-loggarna ResourceManager eller CLI-verktygen för att visa loggarna som oformaterad text för program eller containrar av intresse.

Yarn-loggar i ett ESP-kluster

Två konfigurationer måste läggas till i den anpassade mapred-site i Ambari.

  1. Från en webbläsare går du till https://CLUSTERNAME.azurehdinsight.net, där CLUSTERNAME är namnet på klustret.

  2. Från Ambari-användargränssnittet går du till MapReduce2>Configs>Advanced>Custom mapred-site.

  3. Lägg till en av följande uppsättningar med egenskaper:

    Ange 1

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

    Ange 2

    mapreduce.job.acl-view-job=<user1>,<user2>,<user3>
    
  4. Spara ändringar och starta om alla berörda tjänster.

YARN CLI-verktyg

  1. Använd ssh-kommandot för att ansluta till klustret. Redigera följande kommando genom att ersätta CLUSTERNAME med namnet på klustret och ange sedan kommandot:

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  2. Visa en lista över alla program-ID:t för de Yarn-program som körs med följande kommando:

    yarn top
    

    Observera program-ID:t från kolumnen APPLICATIONID vars loggar ska laddas ned.

    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. Du kan visa dessa loggar som oformaterad text genom att köra något av följande kommandon:

    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>
    

    <Ange informationen applicationId>, <user-who-started-the-application>, <containerId> och <worker-node-address> när du kör dessa kommandon.

Andra exempelkommandon

  1. Ladda ned Yarn-containerloggar för alla programhanterare med följande kommando. Det här steget skapar loggfilen med namnet amlogs.txt i textformat.

    yarn logs -applicationId <application_id> -am ALL > amlogs.txt
    
  2. Ladda ned Yarn-containerloggar för endast den senaste programhanteraren med följande kommando:

    yarn logs -applicationId <application_id> -am -1 > latestamlogs.txt
    
  3. Ladda ned YARN-containerloggar för de två första programbakgrunderna med följande kommando:

    yarn logs -applicationId <application_id> -am 1,2 > first2amlogs.txt
    
  4. Ladda ned alla Yarn-containerloggar med följande kommando:

    yarn logs -applicationId <application_id> > logs.txt
    
  5. Ladda ned yarn-containerloggen för en viss container med följande kommando:

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

YARN-användargränssnitt ResourceManager

YARN-användargränssnittet ResourceManager körs på klustrets huvudnod. Den nås via Ambari-webbgränssnittet. Använd följande steg för att visa YARN-loggarna:

  1. I webbläsaren navigerar du till https://CLUSTERNAME.azurehdinsight.net. Ersätt KLUSTERNAMN med namnet på ditt HDInsight-kluster.

  2. Välj YARN i listan över tjänster till vänster.

    Apache Ambari Yarn service selected.

  3. I listrutan Snabblänkar väljer du en av klusterhuvudnoderna och väljer ResourceManager Logsedan .

    Apache Ambari Yarn quick links.

    Du visas med en lista med länkar till YARN-loggar.

Nästa steg