Sdílet prostřednictvím


Přístup k protokolům aplikací Apache Hadoop YARN v HDInsight založeném na Linuxu

Přečtěte si, jak získat přístup k protokolům pro aplikace Apache Hadoop YARN (Yet Another Resource Negotiator) v clusteru Apache Hadoop na platformě Azure HDInsight.

Co je Apache YARN?

YARN podporuje více programovacích modelů (Apache Hadoop MapReduce je jedním z nich) oddělením správy prostředků od plánování a monitorování aplikací. YARN používá globální ResourceManager(RM), NodeManagery (NM) pro každý uzel pracovníka a ApplicationMastery (AMs) pro každou aplikaci. AM pro jednotlivé aplikace vyjedná prostředky (procesor, paměť, disk, síť) pro spuštění aplikace pomocí RM. RM spolupracuje s NM na udělení těchto prostředků, které jsou uděleny jako kontejnery. AM zodpovídá za sledování průběhu kontejnerů, které k němu přiřadil RM. Aplikace může vyžadovat mnoho kontejnerů v závislosti na povaze aplikace.

Každá aplikace se může skládat z několika pokusů o aplikaci. Pokud aplikace selže, může se opakovat jako nový pokus. Každý pokus se spustí v kontejneru. Kontejner poskytuje kontext pro základní jednotku práce prováděnou aplikací YARN. Veškerá práce, která se provádí v rámci kontejneru, je vykonávána na konkrétním pracovním uzlu, kam byl kontejner přidělen. Viz Hadoop: Psaní aplikací YARN nebo Apache Hadoop YARN pro další referenci.

Pokud chcete cluster škálovat tak, aby podporoval větší propustnost zpracování, můžete clustery škálovat ručně pomocí několika různých jazyků.

Server časové osy YARN

Server časové osy Apache Hadoop YARN poskytuje obecné informace o dokončených aplikacích.

Server časové osy YARN obsahuje následující typ dat:

  • ID aplikace, jedinečný identifikátor aplikace
  • Uživatel, který aplikaci spustil
  • Informace o pokusech o dokončení aplikace
  • Kontejnery používané jakýmkoli pokusem o aplikaci

Aplikace a protokoly YARN

Protokoly aplikací (a přidružené protokoly kontejnerů) jsou důležité při ladění problematických aplikací Hadoop. YARN poskytuje pěknou architekturu pro shromažďování, agregaci a ukládání aplikačních protokolů pomocí agregace protokolů.

Funkce pro agregaci protokolů umožňuje snadnější přístup k aplikačním protokolům. Agreguje protokoly napříč všemi kontejnery na pracovním uzlu a ukládá je jako jeden agregovaný soubor protokolu na pracovní uzel. Protokol je po dokončení aplikace uložen ve výchozím systému souborů. Vaše aplikace může používat stovky nebo tisíce kontejnerů, ale protokoly pro všechny kontejnery spuštěné na jednom pracovním uzlu se vždy agregují do jednoho souboru. Aplikace tedy používá pouze jeden protokol na pracovní uzel. Agregace protokolů je ve výchozím nastavení povolená v clusterech HDInsight verze 3.0 a vyšší. Agregované protokoly jsou umístěny ve výchozím úložišti clusteru. Následující cesta je cesta HDFS k protokolům:

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

V cestě je jméno uživatele user, který aplikaci spustil. Jedná se applicationId o jedinečný identifikátor přiřazený aplikaci pomocí RM YARN.

Agregované protokoly nejsou přímo čitelné, protože jsou napsané v binárním TFileformátu indexovaném kontejnerem. Tyto protokoly můžete zobrazit jako prostý text pro aplikace nebo kontejnery, které jsou zajímavé, pomocí protokolů YARN ResourceManager nebo nástrojů rozhraní příkazového řádku.

Záznamy Yarn v clusteru ESP

Do vlastní mapred-site služby Ambari je potřeba přidat dvě konfigurace.

  1. Ve webovém prohlížeči navigujte na https://CLUSTERNAME.azurehdinsight.net, kde CLUSTERNAME je název vašeho clusteru.

  2. V uživatelském rozhraní Ambari přejděte na MapReduce2>Konfigurace>Pokročilé>Vlastní nastavení mapred-site.

  3. Přidejte jednu z následujících sad vlastností:

    Sada 1

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

    Sada 2

    mapreduce.job.acl-view-job=<user1>,<user2>,<user3>
    
  4. Uložte změny a restartujte všechny ovlivněné služby.

Nástroje rozhraní příkazového řádku YARN

  1. Pomocí příkazu ssh se připojte ke clusteru. Upravte následující příkaz nahrazením CLUSTERNAME vaším názvem clusteru a poté zadejte příkaz:

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  2. Pomocí následujícího příkazu vypíšete všechna ID aplikací aktuálně spuštěných aplikací Yarn:

    yarn top
    

    Poznamenejte si ID aplikace ze APPLICATIONID sloupce, jehož protokoly se mají stáhnout.

    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. Tyto protokoly můžete zobrazit jako prostý text spuštěním jednoho z následujících příkazů:

    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>
    

    <Zadejte informace o adrese applicationId>, <user-who-started-the-application>, <containerId> a <worker-node-address> při spuštění těchto příkazů.

Další ukázkové příkazy

  1. Pomocí následujícího příkazu získejte protokoly kontejnerů Yarn pro všechny hlavní uzly aplikací. Tento krok vytvoří soubor protokolu pojmenovaný amlogs.txt v textovém formátu.

    yarn logs -applicationId <application_id> -am ALL > amlogs.txt
    
  2. Pomocí následujícího příkazu stáhněte protokoly kontejneru Yarn pouze pro nejnovější hlavní server aplikací:

    yarn logs -applicationId <application_id> -am -1 > latestamlogs.txt
    
  3. Pomocí následujícího příkazu stáhněte protokoly kontejneru YARN pro první dva hlavní servery aplikací:

    yarn logs -applicationId <application_id> -am 1,2 > first2amlogs.txt
    
  4. Pomocí následujícího příkazu stáhněte všechny protokoly kontejneru Yarn:

    yarn logs -applicationId <application_id> > logs.txt
    
  5. Pomocí následujícího příkazu stáhněte protokol kontejneru yarn pro konkrétní kontejner:

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

Uživatelské rozhraní YARN ResourceManager

Uživatelské rozhraní YARN ResourceManager běží na hlavním uzlu clusteru. Je přístupný prostřednictvím webového uživatelského rozhraní Ambari. K zobrazení protokolů YARN použijte následující postup:

  1. Ve webovém prohlížeči přejděte na https://CLUSTERNAME.azurehdinsight.net. Nahraďte CLUSTERNAME názvem clusteru HDInsight.

  2. V seznamu služeb vlevo vyberte YARN.

    Vybraná služba Apache Ambari Yarn

  3. V rozevíracím seznamu Rychlé odkazy vyberte jeden z hlavních uzlů clusteru a pak vyberte ResourceManager Log.

    Rychlé odkazy Apache Ambari Yarn.

    Zobrazí se seznam odkazů na protokoly YARN.

Další kroky