로컬 환경 구성 — Docker Compose로 Flink + Kafka 띄우기
실습 순서
- Docker Desktop이 설치·실행 중인지 확인한다(메모리 할당 최소 4GB 권장).
- 작업 폴더에 docker-compose.yml을 만들고 다음 3개 서비스를 정의한다: jobmanager(flink 공식 이미지, 8081 포트 노출), taskmanager(같은 이미지, jobmanager를 가리키도록 JOB_MANAGER_RPC_ADDRESS 환경변수 설정), kafka(단일 브로커, KRaft 모드로 ZooKeeper 없이 구성하면 컨테이너 하나로 충분).
- `docker compose up -d`로 전체를 백그라운드 기동한다.
- 브라우저에서 `http://localhost:8081`(Flink Web UI)에 접속해 Task Manager가 1개 이상 연결됐는지, 사용 가능한 Task Slot이 있는지 확인한다.
- `docker exec -it <kafka컨테이너> kafka-topics --create --topic sensor-readings --bootstrap-server localhost:9092`로 실습용 토픽을 만든다.
기대 결과
Flink Web UI(localhost:8081)의 Task Managers 탭에 1개 이상의 TaskManager가 연결된 상태로 보이고, Overview에 사용 가능한 Slot 수가 0보다 크게 표시된다. `sensor-readings` 토픽이 정상 생성된다.
Troubleshooting
jobmanager 컨테이너가 계속 재시작을 반복한다
docker-compose.yml에서 taskmanager의 JOB_MANAGER_RPC_ADDRESS가 jobmanager 서비스명과 정확히 일치하는지 확인. 오타가 흔한 원인이다.
8081 포트가 이미 사용 중이라는 에러
다른 애플리케이션(다른 Flink, 다른 웹 서버)이 8081을 쓰고 있는지 확인하고, docker-compose.yml의 포트 매핑을 8082:8081처럼 바꿔서 재시도.