Docker

Docker Apache Flink 설치

누구용 2022. 7. 31. 13:46

주기적으로 사용할 수 있는 airflow를 설치해 보았으므로 이제 stream processing 할 수 있는 flink를 설치해 보겠습니다.

 

flink 문서를 참고하였습니다.

 

Docker

Docker Setup # Getting Started # This Getting Started section guides you through the local setup (on one machine, but in separate containers) of a Flink cluster using Docker containers. Introduction # Docker is a popular container runtime. There are offici

nightlies.apache.org

$ FLINK_PROPERTIES="jobmanager.rpc.address: jobmanager"
$ docker network create flink-network

docker container를 사용하면 각각 격리된 환경에서 작동합니다. network 기능을 사용하면 container간의 통신이 가능해지도록 설정할 수 있다고 나와있습니다.

 

이제 flink JobManager를 생성해줍니다.

$ docker run -d --name flink-jobmanager --network flink-network --env FLINK_PROPERTIES="${FLINK_PROPERTIES}" -p 8081:8081 flink jobmanager

 flink의 TaskManager도 생성해줍니다.

taskmanager가 더 필요한 경우 추가적으로 생성해 주면 됩니다.

$ docker run -d --name flink-taskmanager --network flink-network --env FLINK_PROPERTIES="${FLINK_PROPERTIES}" flink taskmanager

 

jobmanager와 taskmager는 --network 를 통해 container간의 통신이 가능하도록 설정해주었습니다.

 

taskmanager를 생성할 때 Failed to connect to [jobmanager:6123] 에러가 발생합니다.

 flink에서 현재 --network를 사용하려면 추가적인 설정이 필요한 것 같습니다.

--network를 사용할때 taskmanager가 제대로 붙지 않습니다.

해결책으로 --network  대신 --link를 사용했습니다.

 

또한 환경 변수 설정 시 문서대로 하면 job.manager.rpc.address가 jobmanager로 제대로 입력되지 않습니다.

env를 별도로 JOB_MANAGER_RPC_ADDRESS=jobmanager 설정하니 제대로 설정됩니다.

$ docker run -d --name flink-jobmanager -e JOB_MANAGER_RPC_ADDRESS=jobmanager -p 8081:8081 flink jobmanager
$ docker run -d --name flink-taskmanager --link flink-jobmanager:jobmanager -e JOB_MANAGER_RPC_ADDRESS=jobmanager flink taskmanager

 

$ ssh -L 8081:localhost:8081  hostName@121.130.50.xxx -p 3333

다음으로 flink dashboard를 연결할 수 있는지 확인해 보았습니다.