Flink-Streaming-State & Fault Tolerance-Checkpointing
Prerequisites 사전 요구 사항
Flink의 checkpoint 메커니즘은 흐름과 state에 안정적인 저장소를 제공해야 합니다.일반적인 요구 사항:
Checkpointing 켜기 및 구성
기본적으로 checkpoint는 닫힙니다.checkpoint를 열기 위해 StreamExecution Environment에서 enableCheckpointing(n) 방법을 호출합니다. 여기서 n은 checkpoint의 주파수(밀리초)를 나타냅니다.checkpoint의 다른 매개 변수는 다음과 같습니다.
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
// start a checkpoint every 1000 ms
env.enableCheckpointing(1000);
// advanced options:
// set mode to exactly-once (this is the default)
env.getCheckpointConfig().setCheckpointingMode(CheckpointingMode.EXACTLY_ONCE);
// make sure 500 ms of progress happen between checkpoints
env.getCheckpointConfig().setMinPauseBetweenCheckpoints(500);
// checkpoints have to complete within one minute, or are discarded
env.getCheckpointConfig().setCheckpointTimeout(60000);
// allow only one checkpoint to be in progress at the same time
env.getCheckpointConfig().setMaxConcurrentCheckpoints(1);
// enable externalized checkpoints which are retained after job cancellation
env.getCheckpointConfig().enableExternalizedCheckpoints(ExternalizedCheckpointCleanup.RETAIN_ON_CANCELLATION);
관련 구성 옵션
더 많은 매개 변수나 기본 매개 변수는conf/flink-conf.yaml 파일을 참조할 수 있습니다
Key
Default
Description
state.backend
(none)
스토리지 상태 스냅샷의 상태 백엔드
state.backend.async
true
이 설정 항목은 비동기식 스냅샷 방법을 사용할지 여부를 결정합니다.일부 상태 백엔드에서 비동기식 스냅샷을 지원하지 않거나 비동기식 스냅샷만 지원하면 이 설정을 무시할 수 있습니다
state.backend.fs.memory-threshold
1024
상태 데이터 파일의 최소 용량입니다.모든state 블록은 이 설정보다 작고 루트 체크포인트 메타데이터 파일에 저장됩니다.
state.backend.incremental
false
이 옵션은 변동분 스냅샷을 사용할지 여부를 결정합니다.증량 스냅샷의 경우 모든 상태를 저장하지 않고 이전 체크포인트와 다른 데이터만 저장합니다.일부 상태 백엔드가 지원되지 않을 수도 있습니다. 이 설정은 무시됩니다.
state.backend.local-recovery
false
이 옵션은 로컬 복구를 사용할지 여부를 설정합니다.기본값은 사용되지 않습니다.현재 로컬 복구는 Keyed의 상태 복구만 지원합니다.현재 MemoryStateBackend는 로컬 복구를 지원하지 않으며 이 설정을 무시합니다.
state.checkpoints.dir
(none)
checkpoint 데이터 파일과 메타데이터 파일의 기본 디렉터리를 저장합니다.이 디렉터리는 모든 프로세스/노드에 접근할 수 있어야 합니다(예를 들어 모든 TaskManager와 JobManager).
state.checkpoints.num-retained
일
예약된 완료된 스냅샷의 최대 데이터
state.savepoints.dir
(none)
savepoint의 기본 저장 디렉터리입니다.상태 백엔드에서 savepoint를 파일 시스템에 쓰기(MemorystateBackend, FsStateBackend, RocksDBStateBackend)
taskmanager.state.local.root-dirs
(none)
로컬 복구에 사용할 상태 디렉토리를 정의합니다.로컬 복구는 현재 Keyed 상태만 지원됩니다.현재 MemoryStateBackend는 로컬 복구를 지원하지 않으며 이 설정을 무시합니다.
상태 백엔드 선택
Flink의 체크포인트 메커니즘은timer와 상태가 있는operater의state 스냅샷을 저장합니다. 상태가 있는operator는connector, 윈도우 및 모든 사용자 정의 상태를 포함합니다.스냅샷이 어디에 저장되느냐에 따라 구성된 상태 백엔드 State Backend가 달라집니다.기본적으로 상태는 TaskManager 메모리에 저장되고 스냅샷은 JobManager 메모리에 저장됩니다.대량의state를 저장하기 위해flink는 다양한 상태 백엔드를 지원하여 상태 저장 및 상태 스냅샷을 저장합니다.다음 방법으로 상태 백엔드를 구성할 수 있습니다
StreamExecutionEnvironment.setStateBackend(...)
state 백엔드를 보고 선택할 수 있는 상태 백엔드와job와cluster에 대한 설정을 알 수 있습니다.Iterative(교체된)job의 상태 스냅샷state checkpoint
flink는 현재iteration을 사용하지 않는job에만chckpoint 처리 보증을 제공합니다.iterationjob에서 checkpoint를 사용하면 이상이 발생할 수 있습니다.iterative 프로그램에서 checkpoint를 강제로 사용하려면 사용자는 checkpoint를 열 때 특수한 로고를 설정해야 합니다
env.enableCheckpointing(interval,CheckpointingMode.EXACTLY_ONCE,force = true)
정책 재시작
Flink는 Restart Strategies를 참조하여 다양한 재가동 정책을 제공합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.