EMR ノートブックで Spark アプリケーションを実行できないのはなぜですか ?

所要時間2分
0

Amazon EMR ノートブックで Apache Spark アプリケーションを実行できません

簡単な説明

EMR ノートブックから実行される Spark アプリケーションは、次の例外を除いて起動できない場合があります。

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

解決方法

EMR ノートブックで Spark アプリケーションを実行する際の、一般的なトラブルシューティング手順は次のとおりです。

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

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

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

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

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

1.    EMR コンソールを開き、[ノートブック] を選択します。

2.    ノートブックリストからノートブックを選択し、[JupyterLab で開く] または [Jupyter で開く] を選択します。新しいブラウザタブが開き、JupyterLab または Jupyter Notebook エディタが表示されます。

3.    カーネルメニューから、[カーネルを再起動] を選択します。

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

Spark セッションのタイムアウト時間を長くするには、次の操作を行います。

1.    EMR コンソールを開き、[ノートブック] を選択します。

2.    ノートブックリストからノートブックを選択します。

3.    EMR ノートブックの Jupyter Web ユーザーインターフェイスにアクセスします。

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

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

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

5.    config.json ファイルの livy_session_startup_timeout_seconds: xxx オプションを追加または更新します。

6.    すべてのカーネルを再起動します。

注: JupyterHub アプリケーションが EMR プライマリインスタンスにインストールされている場合は、次の手順を実行して Spark セッションのタイムアウト時間を長くしてください。

1.    次のコマンドを実行します。

vi /etc/jupyter/conf/config.json

2.    livy_session_startup_timeout_seconds:60 オプションを任意の値に更新してから、JupyterHub コンテナを再起動します。

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

Jupyter Notebook アプリケーションが使用する Spark ドライバーのメモリを調整して、リソース割り当てを制御します。詳しくは、「Amazon EMR ノートブックで Spark 設定を変更する方法を教えてください。」を参照してください。

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

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

1.    次のコマンドを使用して、livy-server のステータスを確認します。

sudo systemctl status livy-server

2.    ステータスがダウンである場合は、次のコマンドを使用して livy-server を再起動します。

sudo systemctl start livy-server

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

デフォルトでは、ノートブッククライアントは 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 が失敗するのを防ぐために、デプロイモードをクラスターモードに変更します。クラスターモードで実行されるドライバーは、プライマリノードではなく、コアノードとタスクノードのアプリケーションプライマリで実行されます。

クラスターモードを使用するには、次の操作を行います。

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公式
AWS公式更新しました 1年前
コメントはありません

関連するコンテンツ