본문 바로가기

공부/Apache Flink

[Apache Flink] Standalone Cluster 구성

728x90
반응형

 

Apache Flink Standalone Cluster 로 서버 구성을 해보겠습니다.

 


○ 설치 

 

먼저 Apache Flink 를 설치를 해야합니다.

이전에 설치 방법을 포스팅 했었습니다.

 

bab-dev-study.tistory.com/7

 

[Apache Flink] 설치하기 (windows 10)

Windows 10에서는 우분투 환경을 만들수있습니다. 이 내용은 나중에 포스팅을 할 예정입니다. Linux용 Windows 하위 시스템(WSL)을 설정하고 MS 스토어에서 "Ubuntu" 를 설치해서 환경을 준비합니다. 1. Java

bab-dev-study.tistory.com

로컬 시스템에서 두개의 worker를 만들도 클러스터 구성이 가능하지만

여기서는 두개의 다른 서버를 사용해서 구성해 보겠습니다.

 

설치 방법은 동일하나 설치 경로가 동일해야 합니다. (필수)

    예시  

        - Server #1 Flink_HOME : /home/user/flink-1.11.3

        - Server #2 Flink_HOME : /home/user/flink-1.11.3

 


○ Flink 설정

 

서버구성은 

  - Server #1 - Master 

  - Server #1 - Worker

  - Server #2 - Worker

 

이렇게 구성을 하겠습니다.

 

먼저 Server #1 의 설정값입니다.

 

> vi $FLINK_HOME/conf/flink-conf.yaml

jobmanager.rpc.address: "server #1 IP"

 

절대로 localhost 가 아닌 외부에서 접속이 가능한 IP 주소입니다. ( 예시 : 192.168.40.10 )

 

> vi $FLINK_HOME/conf/master

192.168.40.10:8081

 

Master node 주소입니다.

Server #1 의 IP:Port 를 입력해 줍니다.

 

> vi $FLINK_HOME/conf/workers

192.168.40.10
192.168.40.20

 

Worker node 주소입니다.

여기는 hostname 또는 IP 주소를 입력합니다. port는 입력하지 않습니다.

  Server #1 IP

  Server #2 IP

를 입력하였습니다.

 

만약 Server #2 에 worker를 두개 실행하고 싶다면 

  Server #1 IP

  Server #2 IP

  Server #2 IP

이렇게 입력하면 됩니다.

 

 

이제 Server #2 의 설정값입니다.

Server #2 에서는 flink-conf.yaml 만 수정해주면 됩니다.

 

> vi $FLINK_HOME/conf/flink-conf.yaml

jobmanager.rpc.address: "server #1 IP"

 

Server #2 에도 Server #1의 IP를 입력해 줍니다.

 

Server #2 의 master / workers 파일은 작업 안해도 됩니다.

 


 

○ SSH 설정

 

Apache Flink Cluster 구성을 하기위해서는 SSH 자동접속이 가능해야 합니다.

 

Server #1 -> Server #2

Server #2 -> Server #1

 

로 접속을 할때 ID/Password 없이 접속이 가능해야합니다.

 

설정법은 다른 포스팅으로 하겠습니다.

 

bab-dev-study.tistory.com/27

 

[Ubuntu] SSH Key 접속하기 (SSH 자동접속)

서버에 ssh 접속을 할때 기본적인 방법으로 ID/Password 방식으로 접속을 합니다. 이 방식은 편하지만 안정적인 방법은 아닙니다. SSH key 방식은 두 클라이언트 간에 Key 인증으로 접속이 이루어집니

bab-dev-study.tistory.com

 


 

○ Host 설정

 

Master 노드에서 Host 파일 설정을 해줘야합니다.

이거때문에 시간을 많이 뺏겼습니다.....

 

host 명에 127.0.1.1 같은 외부에서 접속이 불가능한 IP 가 있으면 안됩니다.

 

> vi /etc/hosts

127.0.0.1 localhost
192.168.40.10 server1

 

저는 기존에 "127.0.1.1 server1" 입력이 되있어서 소스 deploy 시 오류가 계속 났었습니다.

 

Server #1 에서만 하면 됩니다.

 

 

 


 

○ 실행

 

설정작업이 끝났으니 실행해 주면됩니다.

 

마스터 노드인 Server #1에서 실행합니다.

 

> ./bin/start-cluster.sh

Starting cluster.
Starting standalonesession daemon on host server1.
Starting taskexecutor daemon on host server1.
Starting taskexecutor daemon on host server2.

 

실행 결과를 확인합니다.

 

관리자 web UI로 확인이 가능합니다.

 

"Available Task Slots" 이 2 로 되있으면 정상입니다.

 

소스를 Deploy 해보겠습니다.

 

관리자 UI 의 "Submit New Job" 메뉴에서 예제 소스를 실행할 수 있습니다.

실행시 Option 값 중에 "Parallelism" 값을 2로 입력합니다.

 

Server #1에서 명령어로도 가능합니다.

 

> ./bin/flink run -c main.MainClassName -p 2 src_example.jar

 

관리자 UI 의 "Task Managers" 메뉴에서 각각의 Worker가 정상적으로 실행됬는지 log로 볼 수 있습니다.

또는 서버내의 log 폴더에서 직접 볼 수 있습니다.

 

관리자 UI  "Overview" 메뉴에서 "Available Task Slots"이 0으로 표시되야 정상입니다.

728x90
반응형