This documentation is for an unreleased version of Apache Flink. We recommend you use the latest stable version.
作業ディレクトリ #
Flinkは、Flinkプロセス(JobManagerとTaskManager)の作業ディレクトリ(FLIP-198)の設定をサポートします。 作業ディレクトリは、プロセスの再起動時に回復できる情報を格納するために、プロセスによって使われます。 これが動作するための要件は、プロセスが同じIDで開始され、作業ディレクトリが保存されているボリュームにアクセスできることです。
作業ディレクトリの設定 #
Flinkプロセスの作業ディレクトリは次の通りです:
- JobManager working directory:
<WORKING_DIR_BASE>/jm_<JM_RESOURCE_ID>
- TaskManager working directory:
<WORKING_DIR_BASE>/tm_<TM_RESOURCE_ID>
<WORKING_DIR_BASE>
は作業ディレクトリベース、<JM_RESOURCE_ID>
はJobManagerプロセスのリソースID、<TM_RESOURCE_ID>
はTaskManagerプロセスのリソースID。
<WORKING_DIR_BASE>
はprocess.working-dir
によって設定可能です。
ローカルディレクトリを指す必要があります。
明示的に設定されていない場合、デフォルトでio.tmp.dirs
からランダムに生成されたディレクトリになります。
process.jobmanager.working-dir
とprocess.taskmanager.working-dir
を介して、それぞれJobManagerとTaskManager固有の<WORKING_DIR_BASE>
を設定することもできます。
JobManagerのリソースIDはjobmanager.resource-id
で設定できます。
明示的に設定されない場合、ランダムなUUIDになります。
同様に、TaskManagerリソースIDはtaskmanager.resource-id
で設定できます。
明示的に設定されない場合、実行中のプロセスのホストとポートを含むランダムな値になります。
作業ディレクトリに保存されるArtifacts #
Flinkプロセスは作業ディレクトリを使って次のartifactsを共有にします:
BlobServer
とBlobCache
によって保存されるBlobstate.backend.local-recovery
が有効な場合のローカル状態- RocksDBの作業ディレクトリ
プロセス再起動後のローカルリカバリ #
作業ディレクトリをつあkって、プロセスの再起動後のローカルリカバリを有効にすることができます(FLIP-201)。 これは、Flinkがリモートストレージから状態情報を回復する必要がないことを意味します。
この機能を使うには、state.backend.local-recovery
を介してローカルリカバリを有効にする必要があります。
さらに、TaskManagerプロセスはtaskmanager.resource-id
で割り当てられた決定的なリソースIDを取得する必要があります。
最後に重要なことですが、失敗したTaskManagerプロセスは同じ作業ディレクトリを使ってさ起動する必要があります。
process.working-dir: /path/to/working/dir/base
state.backend.local-recovery: true
taskmanager.resource-id: TaskManager_1 # important: Change for every TaskManager process