Linux ベースの HDInsight で Apache Hadoop YARN アプリケーション ログにアクセスするAccess Apache Hadoop YARN application logs on Linux-based HDInsight

Azure HDInsight の Apache Hadoop クラスターで Apache Hadoop YARN (Yet Another Resource Negotiator) アプリケーションのログにアクセスする方法について説明します。Learn how to access the logs for Apache Hadoop YARN (Yet Another Resource Negotiator) applications on an Apache Hadoop cluster in Azure HDInsight.

Apache YARN とはWhat is Apache YARN?

YARN はアプリケーションのスケジュール設定/監視からリソース管理を切り離すことで、複数のプログラミング モデル (Apache Hadoop MapReduce はそのうちの 1 つ) をサポートします。YARN supports multiple programming models (Apache Hadoop MapReduce being one of them) by decoupling resource management from application scheduling/monitoring. YARN は、グローバルな リソース マネージャー (RM)、ワーカー ノードごとのノード マネージャー (NM)、アプリケーションごとのアプリケーション マスター (AM) を使用します。YARN uses a global ResourceManager (RM), per-worker-node NodeManagers (NMs), and per-application ApplicationMasters (AMs). アプリケーションごとの AM は、アプリケーションを実行するためのリソース (CPU、メモリ、ディスク、ネットワーク) を RM と調整します。The per-application AM negotiates resources (CPU, memory, disk, network) for running your application with the RM. RM は NM と連携して、これらのリソースに コンテナーとしての許可を付与します。The RM works with NMs to grant these resources, which are granted as containers. AM は、RM によって自身に割り当てられたコンテナーの進行状況を追跡します。The AM is responsible for tracking the progress of the containers assigned to it by the RM. アプリケーションはその性質によって、多くのコンテナーを必要とする場合があります。An application may require many containers depending on the nature of the application.

各アプリケーションが、複数の "アプリケーション試行" で構成されていることがあります。Each application may consist of multiple application attempts. アプリケーションが失敗した場合、新しい試行として再試行される場合があります。If an application fails, it may be retried as a new attempt. 各試行は、コンテナーで実行されます。Each attempt runs in a container. ある意味、コンテナーは YARN アプリケーションによって実行される作業の基本単位に対して、コンテキストを提供します。In a sense, a container provides the context for basic unit of work performed by a YARN application. コンテナーのコンテキストで行われる作業はすべて、コンテナーが割り当てられた 1 つのワーカー ノードで実行されます。All work that is done within the context of a container is performed on the single worker node on which the container was allocated. Hadoop:YARN アプリケーションの作成」または「Apache Hadoop YARN」を参照してください。See Hadoop: Writing YARN Applications, or Apache Hadoop YARN for further reference.

より多くの処理スループットをサポートするようにクラスターをスケーリングするには、自動スケールを使用するか、いくつかの異なる言語を使用してクラスターを手動でスケーリングしますTo scale your cluster to support greater processing throughput, you can use Autoscale or Scale your clusters manually using a few different languages.

YARN タイムライン サーバーYARN Timeline Server

Apache Hadoop YARN タイムライン サーバーは、完了したアプリケーションに関する一般的な情報を提供しますThe Apache Hadoop YARN Timeline Server provides generic information on completed applications

YARN タイムライン サーバーには、次の種類のデータが含まれています。YARN Timeline Server includes the following type of data:

  • アプリケーション ID (アプリケーションの一意の識別子)The application ID, a unique identifier of an application
  • アプリケーションを開始したユーザーThe user who started the application
  • アプリケーションを完了するために実行された試みに関する情報Information on attempts made to complete the application
  • 特定のアプリケーションの試行で使用されたコンテナーThe containers used by any given application attempt

YARN アプリケーションとログYARN applications and logs

YARN はアプリケーションのスケジュール設定/監視からリソース管理を切り離すことで、複数のプログラミング モデル (Apache Hadoop MapReduce はそのうちの 1 つ) をサポートします。YARN supports multiple programming models (Apache Hadoop MapReduce being one of them) by decoupling resource management from application scheduling/monitoring. YARN は、グローバルな リソース マネージャー (RM)、ワーカー ノードごとのノード マネージャー (NM)、アプリケーションごとのアプリケーション マスター (AM) を使用します。YARN uses a global ResourceManager (RM), per-worker-node NodeManagers (NMs), and per-application ApplicationMasters (AMs). アプリケーションごとの AM は、アプリケーションを実行するためのリソース (CPU、メモリ、ディスク、ネットワーク) を RM と調整します。The per-application AM negotiates resources (CPU, memory, disk, network) for running your application with the RM. RM は NM と連携して、これらのリソースに コンテナーとしての許可を付与します。The RM works with NMs to grant these resources, which are granted as containers. AM は、RM によって自身に割り当てられたコンテナーの進行状況を追跡します。The AM is responsible for tracking the progress of the containers assigned to it by the RM. アプリケーションはその性質によって、多くのコンテナーを必要とする場合があります。An application may require many containers depending on the nature of the application.

各アプリケーションが、複数の "アプリケーション試行" で構成されていることがあります。Each application may consist of multiple application attempts. アプリケーションが失敗した場合、新しい試行として再試行される場合があります。If an application fails, it may be retried as a new attempt. 各試行は、コンテナーで実行されます。Each attempt runs in a container. ある意味、コンテナーは YARN アプリケーションによって実行される作業の基本単位に対して、コンテキストを提供します。In a sense, a container provides the context for basic unit of work performed by a YARN application. コンテナーのコンテキストで行われる作業はすべて、コンテナーが割り当てられた 1 つのワーカー ノードで実行されます。All work that is done within the context of a container is performed on the single worker node on which the container was allocated. 詳細については、「Apache Hadoop YARN の概念」をご覧ください。See Apache Hadoop YARN Concepts for further reference.

アプリケーションのログ (および関連するコンテナーのログ) は、問題のある Hadoop アプリケーションのデバッグに重要です。Application logs (and the associated container logs) are critical in debugging problematic Hadoop applications. YARN は、ログの集計機能により、アプリケーションのログを収集、集計、格納するための便利なフレームワークを提供します。YARN provides a nice framework for collecting, aggregating, and storing application logs with the Log Aggregation feature. ログの集計機能により、アプリケーション ログへのアクセスがさらに確実になります。The Log Aggregation feature makes accessing application logs more deterministic. この機能により、ワーカー ノード上のすべてのコンテナーのログが集計され、ワーカー ノードごとに 1 つの集計ログとして保存されます。It aggregates logs across all containers on a worker node and stores them as one aggregated log file per worker node. ログは、アプリケーションの完了後に既定のファイル システムに保存されます。The log is stored on the default file system after an application finishes. アプリケーションは数百または数千のコンテナーを使用することがありますが、1 つのワーカー ノードで実行されるすべてのコンテナーのログは常に 1 つのファイルに集計されます。Your application may use hundreds or thousands of containers, but logs for all containers run on a single worker node are always aggregated to a single file. したがって、アプリケーションで使用するワーカー ノードごとに存在するログは 1 つのみです。So there's only 1 log per worker node used by your application. ログの集計は、既定で HDInsight クラスター バージョン 3.0 以降で有効になります。Log Aggregation is enabled by default on HDInsight clusters version 3.0 and above. 集計されたログは、クラスターの既定のストレージに配置されます。Aggregated logs are located in default storage for the cluster. 次のパスは、ログへの HDFS パスです。The following path is the HDFS path to the logs:

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

このパスで、user はアプリケーションを開始したユーザーの名前です。In the path, user is the name of the user who started the application. applicationId は、YARN RM からアプリケーションに割り当てられた一意の識別子です。The applicationId is the unique identifier assigned to an application by the YARN RM.

集計されたログは、コンテナーによってインデックスが作成されるバイナリ形式TFile で書かれているため、直接読み取ることはできません。The aggregated logs aren't directly readable, as they're written in a TFile, binary format indexed by container. YARN ResourceManager Logs または CLI ツールを使用して、対象のアプリケーションまたはコンテナーのログをプレーン テキストとして表示します。Use the YARN ResourceManager logs or CLI tools to view these logs as plain text for applications or containers of interest.

ESP クラスターの Yarn ログYarn logs in an ESP cluster

Ambari のカスタム mapred-site に 2 つの構成を追加する必要があります。Two configurations must be added to the custom mapred-site in Ambari.

  1. Web ブラウザーから、https://CLUSTERNAME.azurehdinsight.net に移動します。ここで、CLUSTERNAME はクラスターの名前です。From a web browser, navigate to https://CLUSTERNAME.azurehdinsight.net, where CLUSTERNAME is the name of your cluster.

  2. Ambari UI から [MapReduce2] > [Configs] > [Advanced] > [Custom mapred-site] に移動します。From the Ambari UI, navigate to MapReduce2 > Configs > Advanced > Custom mapred-site.

  3. 次のプロパティのセットのいずれかを追加します。Add one of the following sets of properties:

    セット 1Set 1

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

    セット 2Set 2

    mapreduce.job.acl-view-job=<user1>,<user2>,<user3>
    
  4. 変更を保存し、影響を受けるすべてのサービスを再起動します。Save changes and restart all affected services.

YARN CLI ツールYARN CLI tools

  1. ssh コマンドを使用してクラスターに接続します。Use ssh command to connect to your cluster. 次のコマンドを編集して CLUSTERNAME をクラスターの名前に置き換えてから、そのコマンドを入力します。Edit the command below by replacing CLUSTERNAME with the name of your cluster, and then enter the command:

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  2. 現在実行しているすべての Yarn アプリケーションのアプリケーション ID を、次のコマンドで一覧表示します。List all the application ids of the currently running Yarn applications with the following command:

    yarn top
    

    ログをダウンロードする APPLICATIONID 列のアプリケーション ID をメモしておきます。Note the application id from the APPLICATIONID column whose logs are to be downloaded.

    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. 次のいずれかのコマンドを実行することで、これらのログをプレーン テキストとして表示できます。You can view these logs as plain text by running one of the following commands:

    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>
    

    これらのコマンドを実行するときは、<applicationId>、<user-who-started-the-application>、<containerId>、<worker-node-address> の情報を指定します。Specify the <applicationId>, <user-who-started-the-application>, <containerId>, and <worker-node-address> information when running these commands.

その他のサンプル コマンドOther sample commands

  1. すべてのアプリケーション マスターの Yarn コンテナー ログをダウンロードするには、次のコマンドを使います。Download Yarn containers logs for all application masters with the command below. これにより、amlogs.txt という名前のテキスト形式のログ ファイルが作成されます。This will create the log file named amlogs.txt in text format.

    yarn logs -applicationId <application_id> -am ALL > amlogs.txt
    
  2. 最新のアプリケーション マスターだけの Yarn コンテナー ログをダウンロードするには、次のコマンドを使います。Download Yarn container logs for only the latest application master with the following command:

    yarn logs -applicationId <application_id> -am -1 > latestamlogs.txt
    
  3. 最初の 2 つのアプリケーション マスターの Yarn コンテナー ログをダウンロードするには、次のコマンドを使います。Download YARN container logs for first two application masters with the following command:

    yarn logs -applicationId <application_id> -am 1,2 > first2amlogs.txt
    
  4. すべての Yarn コンテナー ログをダウンロードするには、次のコマンドを使います。Download all Yarn container logs with the following command:

    yarn logs -applicationId <application_id> > logs.txt
    
  5. 特定のコンテナーの Yarn コンテナー ログをダウンロードするには、次のコマンドを使います。Download yarn container log for a particular container with the following command:

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

YARN ResourceManager UIYARN ResourceManager UI

YARN ResourceManager UI はクラスターのヘッド ノードで実行されます。The YARN ResourceManager UI runs on the cluster headnode. Ambari Web UI を使ってアクセスします。It's accessed through the Ambari web UI. YARN ログを表示するには、次の手順を使用します。Use the following steps to view the YARN logs:

  1. ご利用の Web ブラウザーで、 https://CLUSTERNAME.azurehdinsight.net に移動します。In your web browser, navigate to https://CLUSTERNAME.azurehdinsight.net. CLUSTERNAME を、使用する HDInsight クラスターの名前に置き換えます。Replace CLUSTERNAME with the name of your HDInsight cluster.

  2. 左側のサービスの一覧で、 [YARN] を選択します。From the list of services on the left, select YARN.

    選択された Apache Ambari Yarn サービス

  3. [クイック リンク] ボックスの一覧で、クラスター ヘッドノードのいずれかを選択し、 [ResourceManager Log] を選択します。From the Quick Links dropdown, select one of the cluster head nodes and then select ResourceManager Log.

    Apache Ambari Yarn のクイック リンク

    YARN のログへのリンクの一覧が表示されます。You're presented with a list of links to YARN logs.