본문 바로가기

Big Data/Flink

Flink 시작하기 #4 Flink Cluster(Standalone) 설치

Flink Cluster(Standalone) 설치


1. Requirements
  • Java 1.7 or higher
  • SSH

각 노드마다 java 1.7 이상을 미리 설치해 둔다. 예제에서는 Mac OSX 두개로 Flink Cluster(Standalone)을 세팅 할 것이다.

2. SSH 설정

Flink는 다른노드들을 SSH로 컨트롤한다. 따라서 아래와 같이 세팅하라고 나온다.

having passwordless SSH and the same directory structure on all your cluster nodes

즉 비밀번호 없이 SSH로 접속할 수 있도록 세팅하고, 모든 노드들의 flink 디렉토리를 같은 path를 가지게 해야 한다.

master노드가 될 서버에서 ssh-keygen을 사용해서 rsa key를 생성해야 한다.
> ssh-keygen -t rsa
이 후 .ssh에 대한 디렉토리 및 패스워드를 설정할 수 있는데 모두 enter를 눌러 기본으로 설정한다. 기본적으로 $HOME/.ssh 에 생성된다.

> ls -al .ssh 로 rsa가 제대로 생성됬는지 확인한다.
 id_rsa 는 private key이고, id_rsa.pub은 public key이다.
> chmod 700 .ssh 로 해당 디렉토리의 퍼미션 설정을 변경하는 것이 좋다.



이제 다른 노드에 public key를 복사할 것이다.
> scp .ssh/id_rsa.pub macmini@192.168.0.15:id_rsa.pub

worker 가 설치될 노드는 macmini@192.168.0.15이다. 여기에 scp로 id_rsa.pub을 복사한다.

이제 ssh로 해당 노드에 접속해서 public key로 작업을 할 것이다.
> ssh macmini@192.168.0.15
> mkdir .ssh
> cat id_rsa.pub >> .ssh/authorized_keys

해당 노드에도 .ssh 디렉토리를 만들고 master서버에서 생성한 public key를 authorized_keys에 추가하는 작업이다.

설정이 잘 되었는지 확인하기 위해 > ssh macmini@192.168.0.15 로 접속했을 때 비밀번호를 묻지 않고 접속되면 성공이다.



3. Download Flink
http://flink.apache.org/downloads.html 에서 최신버전을 다운받는다.
예제에서는 Hadoop에서 사용하지 않기 때문에 Hadoop 버전은 아무거나 상관없기 때문에 Flink 1.1.4 (Scala-2.1.1) 버전을 받아서 사용한다.



위에서도 설명했듯이 모든 노드의 flink 디렉토리를 같게 설정 해야 한다.

having passwordless SSH and the same directory structure on all your cluster nodes

Mac OSX 기준으로 SSH로 접속했을 때 $HOME 기준이 /USers/${user}/ 에서 작업이 시작되지만 flink는 노드마다 user이름이 다르기 때문에 root아래 같은 디렉토리를 만들어서 복사를 해야 한다.

/server/flink-1.1.4 

위 디렉토리와 똑같이 각 노드에 다운받은 flink를 설치한다. 설치라기보단 압축을 풀어 같은 경로를 지정한다의 의미다.



4. Configuration 
cluster를 위해 약간의 config 파일의 수정이 필요하다.

${flink_home}/conf/flink-conf.yaml
// master node IP
jobmanager.rpc.address: 192.168.0.9

${flink_home}/conf/masters
// master node IP
192.168.0.9:8081

${flink_home}/conf/slaves
// worker node IPs
macmini@192.168.0.15

jobmanager.rpc.addres에 마스터 노드를 세팅하고 masters, slaves 파일에 각각 노드의 역할에 맞춰 IP를 적으면 된다.
slaves에서 SSH로 접속할 수 있도록 명시하면 된다.



5. 실행
이제 모든 설정이 끝났다. master노드에서 클러스터 실행을 하면된다.     
> sh bin/start-cluster.sh

아래 그림 처럼 jobmanager, taskmanager daemon이 각 노드에 실행된 메세지가 나온다
그리고 jps를 각 노드에서 실행 해 보면 확인이 가능하다.



그리고 flink는 기본적인 WEB UI를 제공한다.
master 노드의 8081 포트로 접근이 가능하다.