Amazon EMR の Spark ジョブにおけるステージエラーの問題を解決する方法を教えてください。

所要時間1分
0

Amazon EMR での、Apache Spark アプリケーションのステージエラーをトラブルシューティングしたいです。

簡単な説明

Spark タスクに問題があると、ステージでエラーとなることがあります。ステージでのエラーの原因は、ハードウェアの問題、不適切な Spark 構成、またはコードの問題です。ステージでエラーが発生すると、Spark ドライバーのログに次のような例外が報告されます。

"org.apache.spark.SparkException: ステージで障害が発生し、ジョブが中止されました: ステージ YYY でタスク XXX が 4 回失敗しました。最新の失敗: ステージ YYY でタスク XXX が見つかりません (TID ZZZ, ip-xxx-xx-x-xxx.compute.internal, executor NNN): ExecutorLostFailure (実行中のタスクの 1 つが原因でエグゼキューター NNN が終了しました) (example-reason)"

解決策

--deploy-mode クライアントを使用して送信した Spark ジョブの理由コードを確認する

理由コードは、ターミナルに表示される例外に記載されています。

Amazon EMR ステップからジョブを送信した場合、理由コードは Amazon EMR コンソールstderr ファイルに記載されています。クラスターのログ記録に指定した Amazon Simple Storage Service (Amazon S3) の場所でも、ステップの stderr ログを取得できます。たとえば、ファイルパス s3://example-log-bucket/example-cluster-id/steps/example-step-id/ にログがあります。

YARN アプリケーションログでステージのエラーを特定するには、プライマリノードで次のコマンドを実行します。

yarn logs -applicationId example-application-id | grep "Job aborted due to stage failure" -A 10

注: example-application-id は、お使いの Spark アプリケーション ID に置き換えてください。

YARN アプリケーションは、クラスターのログ記録用に指定した Amazon S3 の場所から取得できます。たとえば、ファイルパス s3//example-log-bucket/example-cluster-id/containers/example-application-id/ を使用できます。アプリケーションのプライマリコンテナにある YARN ResourceManager から YARN アプリケーションログを取得することもできます。

根本原因の解決

例外を特定したら、次の AWS ナレッジセンターの記事のいずれかを参考に問題を解決します。

AWS公式更新しました 7ヶ月前
コメントはありません

関連するコンテンツ