This documentation is for an unreleased version of Apache Flink. We recommend you use the latest stable version.
JobManagerメモリのセットアップ #
JobManagerはFlinkクラスタの制御要素です。 3つの異なるコンポーネントから構成されます: Resource Manager、Dispatcher、実行中のFlinkジョブごとに1つのJobMaster。 このガイドでは、JobManagerの高レベルできめ細かいメモリ設定について説明します。
さらに説明されているメモリ設定は、リリースバージョン1.11以降に適用可能です。Flinkを以前のバージョンからアップグレードする場合は、1.11リリースで多くの変更が導入されたため、移行ガイドを確認してください。
このメモリセットアップガイドは、JobManagerにだけ関係します! JobManagerのメモリコンポーネントは、TaskManagersのメモリ設定と似ていますが、より単純な構造を持っています。
合計メモリの設定 #
メモリ設定をセットアップする最も簡単な方法は、プロセスの合計メモリを設定することです。 ローカル実行モードを使ってJobManagerプロセスを実行する場合は、メモリオプションを設定する必要はなく、効果はありません。
詳細な設定 #
以下のテーブルは、全てのメモリコンポーネント、上記の表現、各コンポーネントのサイズに影響を与えるFlink設定のリファレンスを一覧表示します。
コンポーネント | 設定オプション | 説明 |
---|---|---|
JVMヒープ | jobmanager.memory.heap.size |
JVMヒープ job managerのメモリサイズ。 |
オフヒープメモリ | jobmanager.memory.off-heap.size |
オフヒープ job managerのメモリサイズこのオプションは直接メモリ割り当てとネイティブメモリ割り当てを含む全てのオフヒープメモリの使用量をカバーします。 |
JVMメタスペース | jobmanager.memory.jvm-metaspace.size |
Flink JVMプロセスのメタスペースサイズ |
JVMオーバーヘッド | jobmanager.memory.jvm-overhead.min jobmanager.memory.jvm-overhead.max jobmanager.memory.jvm-overhead.fraction |
他のJVMオーバーヘッド用に予約されているネイティブメモリ: 例えば、スレッドスタック、コードキャッシュ、ガベージコレクション空間など。 [プロセスメモリ全体]の(/docs/deployment/memory/mem_setup/#configure-total-memory)上限付き分割コンポーネントです。 |
JVMヒープ設定 #
合計メモリの説明で前述したように、JobManagerのメモリを設定する別の方法は、明示的にJVMヒープサイズを設定することです(jobmanager.memory.heap.size
)。
これにより、以下によって使われる利用可能なJVMヒープをより詳細に制御できるようになります:
- Flinkフレームワーク
- ジョブの送信中(例えば、特定のバッチソースなど)、またはチェックポイントの完了コールバックで実行されるユーザコード
JVMヒープの必要サイズは実行中のジョブの数、それらの構造、前述のユーザコードの要件によって決まります。
注意 JVMヒープを明示的に設定した場合は、合計プロセスメモリも合計Flinkメモリも設定しないことをお勧めします。そうしなければ、メモリ設定の競合が簡単に発生する可能性があります。
FlinkスクリプトとCLIは、JobManagerプロセスの開始時に、JVMパラメータ*-Xmsと-Xmxを介してJVMヒープ*サイズを設定します。JVMパラメータも参照してください。
オフヒープメモリの設定 #
オフヒープメモリコンポーネントは、あらゆる種類のJVMダイレクトメモリとネイティブメモリの使用量を考慮します。したがって、jobmanager.memory.enable-jvm-direct-memory-limit
オプションを設定してJVMダイレクトメモリ制限を有効にすることもできます。
このオプションが設定されている場合、Flinkは対応するJVM引数*-XX:MaxDirectMemorySizeを介してオフヒープ*メモリサイズに制限を設定します。
JVMパラメータも参照してください。
個のコンポーネントのサイズはjobmanager.memory.off-heap.size
オプションで設定できます。このオプションは調整できます。例えば、JobManagerプロセスが‘OutOfMemoryError: Direct buffer memory’を投げた場合、詳細についてはトラブルシューティングガイドを参照してください。
オフヒープメモリ消費の原因としては、以下のことが考えられます:
- Flinkフレームワークの依存関係 (例えば、Pekkoネットワークコミュニケーション)
- ジョブの送信中(例えば、特定のバッチソースなど)、またはチェックポイントの完了コールバックで実行されるユーザコード
注意 合計FlinkメモリとJVMヒープを明示的に設定しているが、オフヒープメモリを設定していない場合、オフヒープメモリのサイズは合計FlinkメモリからJVMヒープを引いたものとして算出されます。 オフヒープメモリオプションのデフォルト値は無視されます。
ローカルでの実行 #
クラスtを作成せずにFlinkをローカル(例えば、IDEから)実行する場合、JobManagerメモリ設定オプションは無視されます。