ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Flink] 바이너리 파일 실행하기 (Binary Execution File)
    Flink 2023. 12. 29. 06:31
    728x90
    반응형

    - 목차

     

    들어가며.

    이번 글에서는 로컬 환경에서 Flink Jar 파일을 통해 Flink Cluster 를 구성하는 방법에 대해서 알아보려고 합니다.

    먼저 실행을 위한 Jar 파일들을 다운로드를 받아야합니다.

     

    아래 페이지에서 버전별 모든 Flink 관련 파일들을 다운로드할 수 있습니다.

    https://flink.apache.org/downloads/

     

    Downloads

    Apache Flink® Downloads # Apache Flink # Apache Flink® 1.18.0 is the latest stable release. Apache Flink 1.18.1 # Apache Flink 1.18.1 (asc, sha512) Apache Flink 1.18.1 Source Release (asc, sha512) Release Notes # Please have a look at the Release Notes f

    flink.apache.org

     

    저의 경우는 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
Designed by Tistory.