Azure HDInsight を使用した Apache Hadoop YARN のトラブルシューティング
Apache Ambari で Apache Hadoop YARN ペイロードを操作するときに発生する主な問題とその解決策について説明します。
クラスターで新しい YARN キューを作成する方法
解決手順
新しい YARN キューを作成し、すべてのキューの間で容量の割り当てのバランスを取るには、Ambari で次の手順を実行します。
この例では、次の 2 つの既存のキュー (default と thriftsvr) 両方の容量を 50% から 25% に変更し、新しいキュー (Spark) が容量の 50% を使用できるようにします。
キュー | 容量 | 最大容量 |
---|---|---|
default | 25% | 50% |
thrftsvr | 25% | 50% |
spark | 50% | 50% |
[Ambari Views] アイコンを選択し、グリッド パターンを選択します。 次に、[YARN Queue Manager](YARN キュー マネージャー) を選択します。
default キューを選びます。
default キューで、容量を 50% から 25% に変更します。 thriftsvr キューで、容量を 25% に変更します。
新しいキューを作成し、[キューの追加] を選択します。
新しいキューの名前を指定します。
[容量] の値は 50% のままにして、[アクション] ボタンをクリックします。
[Save and Refresh Queues](キューの保存と更新) を選択します。
これらの変更は YARN Scheduler UI にすぐに表示されます。
参考資料
クラスターから YARN ログをダウンロードする方法
解決手順
Secure Shell (SSH) クライアントで HDInsight クラスターに接続します。 詳細については、「関連項目」をご覧ください。
現在実行しているすべての 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
すべてのアプリケーション マスターの YARN コンテナー ログをダウンロードするには、次のコマンドを使用します。
yarn logs -applicationIdn logs -applicationId <application_id> -am ALL > amlogs.txt
このコマンドによって、amlogs.txt という名前のログ ファイルが作成されます。
最新のアプリケーション マスターの YARN コンテナー ログだけをダウンロードするには、次のコマンドを使用します。
yarn logs -applicationIdn logs -applicationId <application_id> -am -1 > latestamlogs.txt
このコマンドによって、latestamlogs.txt という名前のログ ファイルが作成されます。
最初の 2 つのアプリケーション マスターの YARN コンテナー ログをダウンロードするには、次のコマンドを使用します。
yarn logs -applicationIdn logs -applicationId <application_id> -am 1,2 > first2amlogs.txt
このコマンドによって、first2amlogs.txt という名前のログ ファイルが作成されます。
すべての YARN コンテナー ログをダウンロードするには、次のコマンドを使用します。
yarn logs -applicationIdn logs -applicationId <application_id> > logs.txt
このコマンドによって、logs.txt という名前のログ ファイルが作成されます。
特定のコンテナーの 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 UI が読み込まれていない
YARN UI が読み込まれていないか、到達できない場合に "HTTP エラー 502.3 - 無効なゲートウェイ" を返す場合は、Resource Manager サービスが異常であることを示しています。 この問題を軽減するには、次の手順に従います。
- Ambari UI>[YARN]>[SUMMARY] (概要) に移動し、アクティブな Resource Manager のみが開始状態であるかどうかを確認します。 そうでない場合は、異常なまたは停止している Resource Manager を再起動して軽減してみてください。
- 手順 1 で問題が解決しない場合は、アクティブな Resource Manager ヘッド ノードに SSH 接続し、
jstat -gcutil <Resource Manager pid> 1000 100
を使用してガベージ コレクションの状態を確認します。 FGCT がわずか数秒で著しく増加している場合、Resource Manager が "完全な GC" でビジー状態であり、他の要求を処理できないことを示しています。 - Ambari UI>YARN>CONFIGS>Advanced に移動し、
Resource Manager java heap size
を増やします。 - Ambari で必要なサービスを再起動します。
両方のリソース マネージャーがスタンバイ状態になっています
- 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
エラーが存在する場合は、一部のファイルがレプリケーション中かどうか、または HDFS に不足しているブロックがあるかどうかを確認します。
hdfs fsck hdfs://mycluster/
を実行できますhdfs fsck hdfs://mycluster/ -delete
を実行して HDFS を強制的にクリーンアップし、スタンバイ RM の問題を取り除きます。 または、PatchYarnNodeLabel をいずれかのヘッドノードで実行して、クラスターにパッチを適用します。
次のステップ
問題がわからなかった場合、または問題を解決できない場合は、次のいずれかのチャネルでサポートを受けてください。
Azure コミュニティのサポートを通じて Azure エキスパートから回答を得る。
カスタマー エクスペリエンスを向上させるための Microsoft Azure の公式アカウントの @AzureSupport に連絡する。 Azure コミュニティで適切なリソース (回答、サポート、エキスパートなど) につながる。
さらにヘルプが必要な場合は、Azure portal からサポート リクエストを送信できます。 メニュー バーから [サポート] を選択するか、 [ヘルプとサポート] ハブを開いてください。 詳細については、「Azure サポート要求を作成する方法」を参照してください。 サブスクリプション管理と課金サポートへのアクセスは、Microsoft Azure サブスクリプションに含まれていますが、テクニカル サポートはいずれかの Azure のサポート プランを通して提供されます。