スキップしてコンテンツを表示

Amazon EMR ノートブックでの実行に失敗する Spark アプリケーションをトラブルシューティングする方法を教えてください。

所要時間2分
0

Amazon EMR ノートブックでの実行に失敗する Apache Spark アプリケーションをトラブルシューティングしたいと考えています。

簡単な説明

Amazon EMR ノートブックで実行される Spark アプリケーションは、次のエラーで起動に失敗する場合があります。

"The code failed because of a fatal error: Session 4 did not start up in 60 seconds."

解決策

クラスター上のリソースを確認する

Jupyter が Spark コンテキストを作成できるよう、クラスター内に Spark 用の十分な空きリソースがあることを確認します。利用可能なリソースを確認するには、Amazon CloudWatch メトリクスまたはリソースマネージャーを使用します。

Sparkmagic ライブラリが正しく設定されていることを確認する

Jupyter 管理者に問い合わせて、Sparkmagic ライブラリが正しく設定されていることを確認します。

ノートブックカーネルを再起動する

次の手順を実行します。

  1. Amazon EMR コンソールを開きます。
  2. ナビゲーションバーで、[ワークスペース (ノートブック)] を選択します。
  3. [ワークスペース (ノートブック)] リストからワークスペースを選択し、[クイック起動] を選択します。または、リストからワークスペースを選択して [アタッチ] を選択し、[JupyterLab で起動] または [Jupyter で起動] を選択します。
  4. [カーネル] を選択し、[カーネルの再起動] を選択します。

JupyterLab の Spark セッションタイムアウト期間を延長する

次の手順を実行します。

  1. Amazon EMR コンソールを開きます。

  2. ナビゲーションバーで、[ワークスペース (ノートブック)] を選択します。

  3. [ワークスペース (ノートブック)] リストからワークスペースを選択し、[クイック起動] を選択します。新しいブラウザタブで JupyterLab エディタが開きます。

  4. ノートブックターミナルを開きます。

  5. 次のコマンドを実行して config.json ファイルを開きます。

    vi /home/notebook/.sparkmagic/config.json

    注: JupyterHub アプリケーションを Amazon EMR プライマリインスタンスにインストールした場合は、次のコマンドを実行します。

    vi /etc/jupyter/conf/config.json
  6. config.json ファイルの livy_session_startup_timeout_seconds: ### オプションを追加または更新します。

  7. すべてのカーネルを再起動します。
    注: JupyterHub アプリケーションを Amazon EMR プライマリインスタンスにインストールした場合は、JupyterHub コンテナを再起動してください。

Spark ドライバーメモリを調整する

Jupyter Notebook アプリケーションが使用する Spark ドライバーメモリを変更して、リソース割り当てを制御します。詳細については、「How do I modify the Spark configuration in my Amazon EMR Studio Workspace?」(Amazon EMR Studio ワークスペースで Spark 設定を変更する方法を教えてください) を参照してください。

Livy サービスが正常であることを確認する

プライマリノードインスタンスで実行されている Livy サーバーの状態を確認する

次の手順を実行します。

  1. livy-server の状態を確認するには、次のコマンドを実行します。

    sudo systemctl status livy-server
  2. サーバーのステータスが down の場合は、次のコマンドを実行して livy-server を再起動します。

    sudo systemctl start livy-server

Livy サーバーのメモリを増やす

デフォルトでは、ノートブッククライアントは Apache Livy サーバーへの接続を 90 秒間試みます。Livy サーバーが 90 秒以内に応答しない場合、クライアントはタイムアウトになります。Livy サーバーが応答しない最も一般的な理由は、リソース不足です。この問題を解決するには、Livy サーバーのメモリを増やします。

次の手順を実行します。

  1. SSH を使用してプライマリノードインスタンスに接続します

  2. /etc/livy/conf/livy-env.sh ファイルに次のプロパティを追加します。

    export LIVY_SERVER_JAVA_OPTS="-Xmx8g" (option to your value)
  3. Livy サーバーを再起動します。

    sudo systemctl stop livy-server; sudo systemctl start livy-server

Livy でクライアントモードの代わりにクラスターモードを使用する

ノートブックで Spark アプリケーションをクライアントモードで送信すると、Spark ドライバーは Livy サーバーのサブプロセスとして実行されます。サブプロセスを実行すると、プライマリノードのリソースが不足する可能性があります。リソース不足による Livy の障害を防ぐには、デプロイモードをクラスターモードに変更します。Spark アプリケーションをクラスターモードで実行すると、ドライバーはプライマリノードではなくコアノードとタスクノードで実行されます。

次の手順を実行します。

  1. SSH を使用してプライマリノードに接続します

  2. /etc/livy/conf/livy.conf ファイルに次のパラメータを追加します。

    livy.spark.deploy-mode  cluster
  3. Livy サーバーを再起動します。

    sudo systemctl stop livy-server; sudo systemctl start livy-server
AWS公式更新しました 6ヶ月前
コメントはありません

関連するコンテンツ