エンジンメモリと同時実行数の設定
Remote Engine Gen2は、8GBのメモリが割り当てられた状態で動作するよう設定されています。これは、エンジンで同時に発生しうるパイプラインやプレパレーションの実行数に影響します。
実行エラー
あまりにも多くの実行要求数を受信したエンジンでは、多くのパイプライン実行が受け入れられる一方、最後のいくつかがリジェクトされることがあります。その場合は次のエラーが表示されます:
Cannot submit pipeline <PIPELINE_NAME>, too many Livy sessions are used.
<PIPELINE_NAME>はお使いのパイプラインの名前です。
安全上の理由から同時パイプライン実行数は制限されていますが、この制限数はRemote Engine Gen2で設定できます。
同時実行数を設定する
そのためには、次のファイルを開いて編集します:
- <engine_directory>/default/.env - AWS米国、AWS欧州、AWSアジアパシフィック、Azureリージョンでエンジンを使用している場合
- <engine_directory>/eap/.env - Early Adopter Program (早期導入者プログラム)の一部としてエンジンを使用している場合
次の行をチェックします。
LIVY_SERVER_SESSION_MAX_CREATION=<NB_SLOTS>
お使いのエンジンが稼働しているマシンで利用できるリソースに応じてこの値を変更します。この値は次の式に相当し、特定の量のメモリのみがパイプラインの実行専用となり、残りはエンジンの他のサービスで使用されるようになります。
LIVY_SERVER_SESSION_MAX_CREATION=(memory - 4)/spark.driver.memory
ここでmemoryはエンジンに割り当てられたメモリに、4はエンジンの他のサービスに必要な4GBのメモリに、spark.driver.memoryは各パイプラインの実行に割り当てられたメモリ(デフォルトでは1GB)にそれぞれ相当します。
spark.driver.memoryのデフォルト値は、Talend Management Consoleの[Add run profile] (実行プロファイルの追加)フォームの[Advanced configuration] (詳細設定)セクションにパラメーターと値を追加すれば変更できます。
例:
8GBのメモリを持つDocker環境にエンジンをインストールしたら、sparkドライバーのメモリに4GBを割り当て式が(8-4)/4=1になるようにします:
LIVY_SERVER_SESSION_MAX_CREATION=1