Home
Data & Data Engineering
Docker를 사용한 Apache Flink와 Flink Job 올리기(1) - Docker Setting
울이
울이
December 25, 2021
1 min

Table Of Contents

01
Apache Flink
02
Apache Flink 가장 기본적인 친구들
03
Apache Flink Docker에서 띄우기
04
결과화면

이번 글의 내용은 Apache Flink 책인 <Stream Processing with Apache Flink: Fundamentals, Implementation, and Operation of Streaming Applications> 를 참고했으며 직접 개발환경을 세팅 해 보고 작성했다.

Docker를 기반으로 작업을 하려고 한다. Docker를 다룰 줄 알거나 설치가 되어 있다는 가정 하에 작업을 해 보도록 하겠습니다.

Apache Flink

플링크는 스파크 다음 세대의 빅데이터 분석 프레임워크로서 짧은 지연시간 내에 스트림 데이터를 처리하면서도 강력한 상태 관리가 필요한 경우에 최적의 선택이 될 수 있다.

이번에는 설치나 세팅이 비교적 간편한 Docker를 사용해서 Apache Flink를 실행을 해 보았다.

Apache Flink 가장 기본적인 친구들

image
image

  • Master Process

    → Job Manager

    → Flink의 마스터 노드. Flink내의 Task들을 실행하는 Worker들을 관리하는 노드.

    → Task를 스케쥴링하여 실행 시점을 관리하며 실행 상황을 모니터링.

    → 문제가 생겼을 경우 Recover를 담당.

  • Worker Process

    → Task Manager.

    → Master Process에게 할당 받은 Task들을 처리.

    → 작성 된 Job App (JAR파일) 실행을 담당.

Apache Flink Docker에서 띄우기

Docker에서 Apache Flink를 띄웠다. 위에서 설명 된 것 처럼 1개의 Master Process를 띄우고, Worker Process는 입맛에 맞게, 내가 원하는 그림대로 띄워보도록 하자. (올릴 job이 많으면 worker를 늘리면 될 것 같다.)

나는 Mac M1을 사용한다. 때문에 Intel과 M1 모두 다 명령어를 정리 해 보았다. (m1은 아직 찾기가 힘들더라..) Window 라면 Intel 따라서 하시면 될 것 같고, Linux는 amd64를 사용하시면 될 것 같다. (이미지 태그는 조금 차이가 있을수도 있다.)

Intel Mac

  • Master Process (Job Manager)

    docker run -d --name flink-jobmanager -e JOB_MANAGER_RPC_ADDRESS=jobmanager -p 8081:8081 flink jobmanager
    
  • Worker Process (Task Manager)

    # task manager 1
    docker run -d --name flink-taskmanager-1 --link flink-jobmanager:jobmanager -e JOB_MANAGER_RPC_ADDRESS=jobmanager flink taskmanager
    
    # task manager 2
    docker run -d --name flink-taskmanager-2 --link flink-jobmanager:jobmanager -e JOB_MANAGER_RPC_ADDRESS=jobmanager flink taskmanager
    

M1 Mac

  • Master Process (Job Manager)

    docker run -d --name flink-jobmanager -e JOB_MANAGER_RPC_ADDRESS=jobmanager -p 8081:8081 arm64v8/flink jobmanager
    
  • Worker Process (Task Manager)

    # task manager 1
    docker run -d --name flink-taskmanager-1 --link flink-jobmanager:jobmanager -e JOB_MANAGER_RPC_ADDRESS=jobmanager arm64v8/flink taskmanager
    
    # task manager 2
    docker run -d --name flink-taskmanager-2 --link flink-jobmanager:jobmanager -e JOB_MANAGER_RPC_ADDRESS=jobmanager arm64v8/flink taskmanager
    

Linux

  • Master Process (Job Manager)

    docker run -d --name flink-jobmanager -e JOB_MANAGER_RPC_ADDRESS=jobmanager -p 8081:8081 amd64/flink jobmanager
    
  • Worker Process (Task Manager)

    # task manager 1
    docker run -d --name flink-taskmanager-1 --link flink-jobmanager:jobmanager -e JOB_MANAGER_RPC_ADDRESS=jobmanager amd64/flink taskmanager
    
    # task manager 2
    docker run -d --name flink-taskmanager-2 --link flink-jobmanager:jobmanager -e JOB_MANAGER_RPC_ADDRESS=jobmanager amd64/flink taskmanager
    

결과화면

나는 task manager를 3개까지 올렸다. (중간에 있는 flink-taskmanager를 1~3 까지 생성)

나는 m1 Mac을 사용하는데, docker의 Flink 중 m1 mac과 호환되는 Flink는 버전이 좀 낮은 것 같았다. Docker가 아닌 Flink 공식 홈페이지에서 파일을 받으면, Flink-1.13.0 버전이라서 화면 구성이 조금 다르다.

image
image

image
image


Tags

#Flink#Stream#Docker#Apache Flink#Flink Job
Previous Article
Docker를 사용한 Apache Flink와 Flink Job 올리기(2) - Flink Job Example
울이

울이

개발자 울이

경험하고 사용하고 개선하는 것, 그리고 소통하면서 성장하는 것을 좋아합니다.

Expertise

Backend
Frontend
Data Engineering

Social Media

githublinkedinwebsiteinstagram

Related Posts

AWS Kinesis python으로 다뤄보기
AWS Kinesis python으로 다뤄보기
December 30, 2021
1 min
Docker로 작성한 서버, Debug모드 적용하기
Backend Engineering
Docker로 작성한 서버, Debug모드 적용하기
January 12, 2022
1 min
© 2022, All Rights Reserved.

Quick Links

Home

Social Media