Azure HDInsight を使用した Apache Hadoop YARN のトラブルシューティング

Apache Ambari で Apache Hadoop YARN ペイロードを操作するときに発生する主な問題とその解決策について説明します。

クラスターで新しい YARN キューを作成する方法

解決手順

新しい YARN キューを作成し、すべてのキューの間で容量の割り当てのバランスを取るには、Ambari で次の手順を実行します。

この例では、次の 2 つの既存のキュー (defaultthriftsvr) 両方の容量を 50% から 25% に変更し、新しいキュー (Spark) が容量の 50% を使用できるようにします。

キュー 容量 最大容量
default 25% 50%
thrftsvr 25% 50%
spark 50% 50%
  1. [Ambari Views] アイコンを選択し、グリッド パターンを選択します。 次に、[YARN Queue Manager](YARN キュー マネージャー) を選択します。

    Apache Ambari ダッシュボードの YARN Queue Manager。

  2. default キューを選びます。

    Apache Ambari YARN での default キューの選択。

  3. default キューで、容量を 50% から 25% に変更します。 thriftsvr キューで、容量を 25% に変更します。

    default キューと thriftsvr キューの容量を 25% に変更する。

  4. 新しいキューを作成し、[キューの追加] を選択します。

    Apache Ambari YARN ダッシュボードのキューの追加。

  5. 新しいキューの名前を指定します。

    Apache Ambari YARN ダッシュボードのキューの名前。

  6. [容量] の値は 50% のままにして、[アクション] ボタンをクリックします。

    Apache Ambari YARN でのアクションの選択。

  7. [Save and Refresh Queues](キューの保存と更新) を選択します。

    [Save and Refresh Queues](キューの保存と更新) を選択します。

これらの変更は YARN Scheduler UI にすぐに表示されます。

参考資料

クラスターから YARN ログをダウンロードする方法

解決手順

  1. Secure Shell (SSH) クライアントで HDInsight クラスターに接続します。 詳細については、「関連項目」をご覧ください。

  2. 現在実行しているすべての YARN アプリケーションのアプリケーション ID を一覧で表示するには、次のコマンドを実行します。

    yarn top
    

    ID が APPLICATIONID 列に一覧で表示されます。 ログを APPLICATIONID 列からダウンロードできます。

    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. すべてのアプリケーション マスターの YARN コンテナー ログをダウンロードするには、次のコマンドを使用します。

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

    このコマンドによって、amlogs.txt という名前のログ ファイルが作成されます。

  4. 最新のアプリケーション マスターの YARN コンテナー ログだけをダウンロードするには、次のコマンドを使用します。

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

    このコマンドによって、latestamlogs.txt という名前のログ ファイルが作成されます。

  5. 最初の 2 つのアプリケーション マスターの YARN コンテナー ログをダウンロードするには、次のコマンドを使用します。

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

    このコマンドによって、first2amlogs.txt という名前のログ ファイルが作成されます。

  6. すべての YARN コンテナー ログをダウンロードするには、次のコマンドを使用します。

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

    このコマンドによって、logs.txt という名前のログ ファイルが作成されます。

  7. 特定のコンテナーの YARN コンテナー ログをダウンロードするには、次のコマンドを使用します。

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

    このコマンドによって、containerlogs.txt という名前のログ ファイルが作成されます。

その他の情報

Yarn アプリケーション診断情報を確認する方法

Yarn UI の診断は、Yarn で実行されているアプリケーションの状態とログを表示できる機能です。 診断は、アプリケーションのトラブルシューティングとデバッグに役立ち、パフォーマンスとリソースの使用状況を監視するのに役立ちます。

特定のアプリケーションの診断を表示するには、アプリケーションの一覧でアプリケーション ID をクリックします。 アプリケーションの詳細ページには、アプリケーションを実行するために行われたすべての試行の一覧も表示されます。 試行 ID、コンテナー ID、ノード ID、開始時刻、終了時刻、診断など、任意の試行をクリックして詳細を表示できます

Yarn アプリケーション診断を示すスクリーンショット。

YARN の一般的な問題のトラブルシューティング方法を教えてください。

Yarn UI が読み込まれていない

YARN UI が読み込まれていないか、到達できない場合に "HTTP エラー 502.3 - 無効なゲートウェイ" を返す場合は、Resource Manager サービスが異常であることを示しています。 この問題を軽減するには、次の手順に従います。

  1. Ambari UI>[YARN]>[SUMMARY] (概要) に移動し、アクティブな Resource Manager のみが開始状態であるかどうかを確認します。 そうでない場合は、異常なまたは停止している Resource Manager を再起動して軽減してみてください。
  2. 手順 1 で問題が解決しない場合は、アクティブな Resource Manager ヘッド ノードに SSH 接続し、jstat -gcutil <Resource Manager pid> 1000 100 を使用してガベージ コレクションの状態を確認します。 FGCT がわずか数秒で著しく増加している場合、Resource Manager が "完全な GC" でビジー状態であり、他の要求を処理できないことを示しています。
  3. Ambari UI>YARN>CONFIGS>Advanced に移動し、Resource Manager java heap size を増やします。
  4. Ambari で必要なサービスを再起動します。

両方のリソース マネージャーがスタンバイ状態になっています

  1. Resource Manager ログを確認して、同様のエラーが存在するかどうかを確認します。
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. エラーが存在する場合は、一部のファイルがレプリケーション中かどうか、または HDFS に不足しているブロックがあるかどうかを確認します。 hdfs fsck hdfs://mycluster/ を実行できます

  2. hdfs fsck hdfs://mycluster/ -delete を実行して HDFS を強制的にクリーンアップし、スタンバイ RM の問題を取り除きます。 または、PatchYarnNodeLabel をいずれかのヘッドノードで実行して、クラスターにパッチを適用します。

次のステップ

問題がわからなかった場合、または問題を解決できない場合は、次のいずれかのチャネルでサポートを受けてください。

  • Azure コミュニティのサポートを通じて Azure エキスパートから回答を得る。

  • カスタマー エクスペリエンスを向上させるための Microsoft Azure の公式アカウントの @AzureSupport に連絡する。 Azure コミュニティで適切なリソース (回答、サポート、エキスパートなど) につながる。

  • さらにヘルプが必要な場合は、Azure portal からサポート リクエストを送信できます。 メニュー バーから [サポート] を選択するか、 [ヘルプとサポート] ハブを開いてください。 詳細については、「Azure サポート要求を作成する方法」を参照してください。 サブスクリプション管理と課金サポートへのアクセスは、Microsoft Azure サブスクリプションに含まれていますが、テクニカル サポートはいずれかの Azure のサポート プランを通して提供されます。