← Apache Flink 코스

Courses · Day 4

실습 — 개인 PC 로컬 환경에서 직접 돌려보기

스텝 15 / 17

15 / 17
실습 flink-course-15

체크포인트 후 강제 재시작으로 exactly-once 복구 확인

실습 순서

  1. PyFlink 스크립트에 체크포인트를 활성화한다(예: 10초 간격, exactly-once 모드).
  2. 잡을 다시 제출하고, Flink Web UI의 Checkpoints 탭에서 체크포인트가 주기적으로 성공(Completed)하는지 확인한다.
  3. 누적 카운트(예: sensor_id별 전체 이벤트 수)가 콘솔에 계속 늘어나는 걸 확인한 상태에서, `docker kill <taskmanager컨테이너>`로 TaskManager를 강제 종료한다.
  4. docker-compose의 재시작 정책 덕분에 TaskManager가 자동으로 다시 뜨는지, Flink Web UI에서 잡이 자동으로 RESTARTING → RUNNING으로 돌아오는지 관찰한다.
  5. 재시작 이후 누적 카운트가 0으로 초기화되지 않고 장애 이전 값에서 이어지는지 확인한다(마지막 체크포인트부터 복구됐다는 증거).

기대 결과

TaskManager 강제 종료 후 Flink Web UI에서 잡이 자동으로 재시작되고, 누적 카운트가 초기화되지 않은 채(마지막 체크포인트 시점 상태에서) 이어서 증가한다 — Day 3-5에서 배운 '오프셋+상태를 함께 스냅샷'이 실제로 동작하는 걸 눈으로 확인하는 실습.

Troubleshooting

TaskManager가 재시작 안 된다

docker-compose.yml의 taskmanager 서비스에 `restart: on-failure` 또는 `restart: always` 정책이 있는지 확인.

카운트가 0으로 초기화된 채 재개된다

체크포인트 설정(enableCheckpointing)이 실제로 적용됐는지, 강제 종료 전에 최소 1회 이상 체크포인트가 Completed 됐는지 Web UI에서 재확인.