Amazon EMR で Jupyter Notebook を使用して Apache Livy アプリケーションを実行する際に発生するエラーをトラブルシューティングしたいと考えています。
簡単な説明
Amazon EMR で Jupyter Notebook を使用して Apache Livy アプリケーションを実行すると、次のいずれかのエラーが発生します。
- 「'404' from xxxxxxxx with error payload: "session '0' not found"」(xxxxxxxx からの「404」とエラーペイロード:「セッション「0」が見つかりません」)
- 「The code failed because of a fatal error: Error sending http request and maximum retry encountered.」(致命的なエラーのためにコードが失敗しました: http リクエストの送信中にエラーが発生し、最大再試行回数に達しました。)
通常、これらのエラーは、Jupyter Notebook セッションをタイムアウトになるまで実行したままにすると発生します。これらのエラーを解決するには、マスターノードの /etc/livy/conf/livy.conf の livy.server.session.timeout プロパティの値を大きくします。その後、livy-server を再起動します。
解決方法
実行中の Amazon EMR クラスターで、または新しいクラスターを起動するときに、livy.server.session.timeout を変更することができます。
実行中のクラスターの場合
1. マスターノードで /etc/livy/conf/livy.conf を開き、livy.server.session.timeout の値 (デフォルト値は 1 時間) を変更します。例:
sudo vim /etc/livy/conf/livy.conf
livy.server.session.timeout 2h
2. マスターノードで次のコマンドを実行して、livy-server を再起動します。
Amazon Linux 2 に基づく次の Amazon EMR リリースバージョンのいずれかを使用しているとします。
- Amazon EMR リリースバージョン 5.30.0 以降
- Amazon EMR 6.x シリーズ
その後、次のコマンドを実行します:
sudo systemctl stop livy-server
sudo systemctl start livy-server
Amazon EMR リリースバージョン 5.29.0 以前を使用している場合は、次のコマンドを実行します。
sudo stop livy-server
sudo start livy-server
livy-server が再起動すると、クラスターは使用できなくなります。ダウンタイムを回避するには、Amazon EMR クラスターの起動時に Livy アプリケーションを設定します。
新しいクラスターの場合
Amazon EMR リリースバージョン 4.6.0 以降を使用してクラスターを起動するときに、次のような設定オブジェクトを追加します。livy.server.session.timeout の変更に加えて、必要に応じて次の関連プロパティを変更することができます。
- livy.server.session.timeout-check: オンにすると、Livy はタイムアウトしきい値に達するアイドルセッションを停止します。デフォルト設定は [true] です。
- livy.server.yarn.app-lookup-timeout: Livy が YARN アプリケーションを失ったとみなすまで、YARN アプリケーションを探す時間。デフォルト設定は [60s] (60 秒) です。
[
{
"Classification": "livy-conf",
"Properties": {
"livy.server.session.timeout-check": "true",
"livy.server.session.timeout": "2h",
"livy.server.yarn.app-lookup-timeout": "120s"
}
}
]
ジョブの実行が完了したら、必ず Jupyter または Zeppelin でセッションを閉じてください。開いているセッションが多すぎると、リソースが利用可能になるまで新しいジョブを開始できません。
関連情報
Apache Livy
Amazon EMR での Jupyter ノートブック