https://nightlies.apache.org/flink/flink-docs-release-1.20/docs/try-flink/local_installation/

Setup Flink

Flink를 로컬에 설치하고 실행시키는 방법이 작성되어있다.

바이너리 파일로 받아서 압축을 해제하긴하지만,, java 버전에 의존하는 것도 그렇고 이후의 Operation Playground에서도 어차피 도커를 활용하기 때문에 도커를 활용해서 실행시키는 편을 택했다.

Flink 이미지를 다운받은 다음에 JobManager, TaskManager를 각각 컨테이너로 만들고 하나의 네트워크로 묶어줘야한다.

단순하게 명령어만으로는 너무나 귀찮은 작업이기에… docker-compose.yml 파일을 하나 작성해줬다.

services:
  jobmanager:
    image: flink:1.20.2-scala_2.12
    command: jobmanager
    ports:
      - "8081:8081"
    environment:
      FLINK_PROPERTIES: |
        jobmanager.rpc.address: jobmanager

  taskmanager:
    image: flink:1.20.2-scala_2.12
    depends_on:
      - jobmanager
    command: taskmanager
    environment:
      FLINK_PROPERTIES: |
        jobmanager.rpc.address: jobmanager
        taskmanager.numberOfTaskSlots: 2

image.png

image.png

flink의 jobmanager와 taskmanager가 컨테이너로 실행되고 있는 것을 확인할 수 있다.

image.png

Submitting a Flink job

페이지에는 로컬에서 직접 설치된 Flink를 기준으로 설명하고 나는 docker로 Flink를 구성해서 컨테이너로 띄웠으니 예제 방법들을 Docker로 변환해서 생각해야한다.

image.png

페이지에서 말한 WordCount.jar는 JobManager 컨테이너의 /opt/flink/examples/streaming/ 경로에 있다는 것을 확인했다.

이를 실행시키기 위해서 docker exec을 이용한다.

docker exec -it flink-practice-jobmanager-1 /opt/flink/bin/flink run -d /opt/flink/examples/streaming/WordCount.jar