Working Directory

Working Directory (작업 디렉터리)

Flink는 Flink 프로세스(JobManager 및 TaskManager)를 위한 작업 디렉터리(FLIP-198)를 구성하는 것을 지원합니다. 작업 디렉터리는 프로세스가 재시작 시 복구할 수 있는 정보를 저장하는 데 사용됩니다. 이 기능이 동작하려면 프로세스가 동일한 정체성(identity)으로 시작되어야 하고 작업 디렉터리가 저장된 볼륨에 접근할 수 있어야 합니다.

출처: 문서

본문

작업 디렉터리 구성 (Configuring the Working Directory)

Flink 프로세스의 작업 디렉터리는 다음과 같습니다:

  • JobManager 작업 디렉터리: /<jobmanager_resource_id>/jm_
  • TaskManager 작업 디렉터리: /<taskmanager_resource_id>/tm_

여기서 작업 디렉터리 기본(base)이고, JobManager 프로세스의 리소스 id이며, TaskManager 프로세스의 리소스 id입니다.

`` 는 process.working-dir로 구성할 수 있습니다. 로컬 디렉터리를 가리켜야 합니다. 명시적으로 구성하지 않으면 기본적으로 io.tmp.dirs에서 무작위로 선택된 디렉터리로 설정됩니다.

JobManager와 TaskManager 각각의 `` 는 각각 process.jobmanager.working-dirprocess.taskmanager.working-dir으로 구성할 수도 있습니다.

JobManager 리소스 id는 jobmanager.resource-id로 구성할 수 있습니다. 명시적으로 구성하지 않으면 무작위 UUID가 됩니다.

마찬가지로 TaskManager 리소스 id는 taskmanager.resource-id로 구성할 수 있습니다. 명시적으로 구성하지 않으면 실행 중인 프로세스의 호스트와 포트를 포함한 무작위 값이 됩니다.

작업 디렉터리에 저장되는 아티팩트 (Artifacts Stored in the Working Directory)

Flink 프로세스는 다음 아티팩트를 저장하는 데 작업 디렉터리를 사용합니다:

  • BlobServerBlobCache가 저장하는 Blob
  • state.backend.local-recovery가 활성화된 경우의 로컬 상태
  • RocksDB의 작업 디렉터리

프로세스 재시작 간 로컬 복구 (Local Recovery Across Process Restarts)

작업 디렉터리는 프로세스 재시작 간 로컬 복구(FLIP-201)를 활성화하는 데 사용할 수 있습니다. 이는 Flink가 원격 스토리지에서 상태 정보를 복구할 필요가 없음을 의미합니다.

이 기능을 사용하려면 state.backend.local-recovery로 로컬 복구를 활성화해야 합니다. 또한 TaskManager 프로세스에 taskmanager.resource-id를 통해 결정적(deterministic) 리소스 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

더 알아보기 (Learn more)