-
[Flink] 바이너리 파일 실행하기 (Binary Execution File)Flink 2023. 12. 29. 06:31728x90반응형
- 목차
들어가며.
이번 글에서는 로컬 환경에서 Flink Jar 파일을 통해 Flink Cluster 를 구성하는 방법에 대해서 알아보려고 합니다.
먼저 실행을 위한 Jar 파일들을 다운로드를 받아야합니다.
아래 페이지에서 버전별 모든 Flink 관련 파일들을 다운로드할 수 있습니다.
https://flink.apache.org/downloads/
저의 경우는 Flink 1.16.1 버전의 실행파일을 내려받도록 하겠습니다.
그리고 https://archive.apache.org/dist/flink/flink-1.16.1/ 페이지에서 세부적인 파일들을 설치할 수 있습니다.
마지막으로 다운로드한 flink1.16.1-bin-scala_2.12.tgz 파일의 압축을 풀고
압축이 해제된 flink-1.16.1 파일이 나타난다면 본격적인 준비는 마무리됩니다.
Flink Cluster 구성하기.
flink-1.16.1 폴더의 내부 구조는 아래와 같습니다.
여기서 중요한 구성요소인 bin, conf 에 대해서 설명드리겠습니다.
bin.
bin 폴더 내부의 실행 파일들이 존재합니다.
그리고 이 실행파일들은 Flink Cluster 를 구축하기 위한 실행파일들입니다.
JobManager, TaskManager 를 실행시키거나 종료시키며, REPL 모드를 실행시킬 수 있는 실행 파일들의 모음입니다.
Flink Cluster 를 구축하기 위한 일부 실행 파일들을 추려서 설명해보도록 하겠습니다.
├── bin │ ├── bash-java-utils.jar │ ├── config.sh │ ├── find-flink-home.sh │ ├── flink │ ├── flink-console.sh │ ├── flink-daemon.sh │ ├── historyserver.sh │ ├── jobmanager.sh │ ├── kubernetes-jobmanager.sh │ ├── kubernetes-session.sh │ ├── kubernetes-taskmanager.sh │ ├── pyflink-shell.sh │ ├── sql-client.sh │ ├── sql-gateway.sh │ ├── standalone-job.sh │ ├── start-cluster.sh │ ├── start-zookeeper-quorum.sh │ ├── stop-cluster.sh │ ├── stop-zookeeper-quorum.sh │ ├── taskmanager.sh │ ├── yarn-session.sh │ └── zookeeper.sh
jobmanager.sh
jobmanager.sh 은 JobManager 를 실행시키는 실행파일입니다.
JobManager 를 위한 JVM 프로세스를 실행시킵니다.
JobManager 가 단독으로 실행되니 추가적으로 TaskManager 를 실행시키는 Shell Script 가 실행되어야 합니다.
jobmanager.sh 은 추가적인 옵션으로 start, start-foreground, stop, stop-all 인자와 함께 실행됩니다.
이름에서 알 수 있듯이, start 옵션을 background mode 로 JobManager 를 실행하구요.
start-foreground 는 foreground mode 로 JobManager 를 실행하게 됩니다.
반대로 stop 과 stop-all 은 실행 중인 JobManager JVM Process 를 종료하게 됩니다.
< JobManager 실행하기 >
jobmanager.sh start
Starting standalonesession daemon on host local.
< JobManager 종료하기 >
jobmanager.sh stop
Stopping standalonesession daemon (pid: 2979) on host local.
만약 JobManager 가 실행된다면, 8081 Port 를 통해서 Web UI 에 접속할 수 있습니다.
taskmanager.sh
taskmanager.sh 은 jobmanager.sh 과 마찬가지로 TaskManager JVM Process 를 실행하는 Shell Script 입니다.
taskmanager.sh 또한 start, start-foreground, stop, stop-all 의 인자와 함께 동작합니다.
< TaskManager 실행하기 >
taskmanager.sh start
Starting taskexecutor daemon on host local.
< TaskManager 종료하기 >
taskmanager.sh stop
Stopping taskexecutor daemon (pid: 4098) on host local.
그리고 TaskManager 가 실행된 이후에 JobManager 의 Web UI 에서 연결된 TaskManager 를 확인할 수 있습니다.
저의 경우에 TaskManager 의 Task Slots 은 5 로 설정하였기 때문에 Available Task Slots 이 0 에서 5 로 늘어납니다.
taskmanager.sh start 를 추가적으로 실행하게 되면, TaskManager 또한 늘어납니다.
마지막으로 모든 JobManager 와 TaskManager 는 stop-all 명령어를 통해서 한번에 종료됩니다.
taskmanager.sh stop-all & jobmanager.sh stop-all
[1] 5433 Stopping taskexecutor daemon (pid: 4706) on host local. Stopping standalonesession daemon (pid: 3683) on host local. Stopping taskexecutor daemon (pid: 5045) on host local. Stopping taskexecutor daemon (pid: 5299) on host local. [1] + done ./taskmanager.sh stop-all
start-cluster.sh & stop-cluster.sh
start-cluster.sh 은 TaskManager 와 JobManager 를 한번에 실행시킵니다.
반대로 stop-cluster.sh 은 실행되었던 Flink Cluster 를 종료시키는 Shell Script 입니다.
< start-cluster.sh >
start-cluster.sh
Starting cluster. Starting standalonesession daemon on host local. Starting taskexecutor daemon on host local.
< stop-cluster.sh >
stop-cluster.sh
Stopping taskexecutor daemon (pid: 10778) on host local. Stopping standalonesession daemon (pid: 10529) on host local.
conf.
conf 디렉토리는 Cluster 의 정보를 담는 flink-conf.yaml 과 Log 설정을 위한 yaml 파일로 구성됩니다.
flink-conf.yaml 의 중요한 설정들에 대해서 알아보겠습니다.
taskmanager.numberOfTaskSlots
taskmanager.numberOfTaskSlots 은 하나의 TaskManager 가 가질 수 있는 Slot 의 갯수를 의미합니다.
taskmanager.sh start 또는 taskmanager.sh start-foreground 에 의해서 TaskManager 가 실행될 때에
flink-conf.yaml 의 taskmanager.numberOfTaskSlots 에 적용된 값만큼의 Slot 이 반영됩니다.
만약 taskmanager.numberOfTaskSlots 이 1 이라면 아래 이미지처럼 1개의 Slot 이 적용됩니다.
그리고 Flink Job 은 최대 1개의 Parallelism 만을 적용할 수 있게 되죠.
web.submit.enable
web.submit.enable 은 JobManager 가 제공하는 Web UI 를 통해서 Job 을 실행할 수 있는지 아닌지에 대한 여부입니다.
web.submit.enable 의 기본값은 true 이구요.
아래 사진과 같이 Web UI 에서 Job 을 실행할 수 있는 UI 가 오픈됩니다.
반면 web.submit.enable 이 False 인 경우에는 아래 이미지처럼 "Submit New Job" GNB 가 생략됩니다.
반응형'Flink' 카테고리의 다른 글
Flink State 알아보기 (0) 2024.01.10 Flink Watermark 알아보기 (0) 2024.01.10 Flink Checkpoint 알아보기 (0) 2024.01.10 Flink KeyedStream 알아보기 (0) 2023.10.11 Flink Parquet FileSink 알아보기 (0) 2023.10.04