소프트웨어 요구 사항
- 많은 플링크 개발자가 선호하는 환경인 유닉스 기반으로 설정 시 여러 도구 사용 가능해 편리
- 플링크 DataStream API는 자바와스칼라에서 사용 가능
- 자바 JDK(8또는 그 이상의 버전) 필수
- 플링크 애플리케이션 개발에 필수는 아니지만 아래 소프트웨어 설치됐다고 가정
- 아파치 메이븐 3.x.
- 자바나 스칼라 개발용 IDE
IDE에서 플링크 애플리케이션 실행과 디버깅
- 플링크가 분산 데이터 처리 시스템이긴 하지만 로컬 머신에서도 개발과 기본 테스트가능
IDE에서 예제 코드 불러오기
- git clone https://github.com/streaming-with-flink/examples-scala
- intellij idea
- File>New>Project from Existing Sources - examples-scala
- Import project from external model, Maven 선택
- File>New>Project from Existing Sources - examples-scala
IDE에서 플링크 애플리케이션 실행
- AverageSensorReadings
- 여러 온도 센서에서 이벤트 발생하는 것을 흉내내는 이벤트 생성, 이벤트의 온도 화씨에서 섭씨로 변환해 매초 각 센서의 평균 온도 계산. 표준 출력 아웃풋
- 프로그램 출력 - 여러 연산 태스크 진행상황 나타내는 SCHEDULING, DEPLOYING, RUNNING과 같은 문장으로 시작
- 플링크 애플리케이션 실행 태스크를 여러 태스크매니저로 배포하는 잡매니저(마스터)에 데이터플로우 제출
- 잡매니저와 태스크매니저는 여러 머신에서 별도의 JVM 프로세스로 실행
- 보통 프로그램의 main() 메서드에서 데이터플로우 조립하고 StreamExecutionEnvironment.execute()가 실행될 때 원격의 잡매니저에 데이터플로우 제출
- 플링크는 execute() 메서드 호출 시 잡매니저와 태스크매니저를 동일 JVM에서 별도 스레드로 시작할 수 있는 모드 제공
- 전체 플링크 애플리케이션을 하나의 JVM 프로세스에서 멀티스레드로 실행 - 플링크 프로그램 IDE에서 실행시 유용
IDE에서 플링크 애플리케이션 디버깅
- 단일 JVM 실행 모드 덕분에 플링크 애플리케이션 IDE에서 디버깅 가능
- 디버깅 시 고려 사항
- 병렬 값 지정하지 않으면 개발 머신의 CPU 코어 개수만큼 스레드 생성해 프로그램 실행 (멀티스레드로 실행되는 프로그램 디버깅)
- 단일 JVM에서 프로그램이 실행되므로 클래스 로딩과 같은 문제 제대로 디버깅 되지 않을 수 있음
- 단일 JVM에서 실행하지만 스레드 간에 통신할 때나 상태를 저장할 때 레코드 직렬화
플링크 메이븐 프로젝트 부트스트랩
- 플링크는 자바나 스칼라 플링크 애플리케이션을 메이븐 프로젝트로 생성하는 메이븐 아키타입(archetype) wprhd
- Flink Maven Quickstart Scala 프로젝트 생성 및 개발 시작 시 사용하는 명령어
mvn archetype:generate
mvn archetype:generate \\
-DarchetypeGroupId=org.apache.flink \\
-DarchetypeArtifactId=flink-quickstart-scala \\
-DarchetypeVersion=1.7.1 \\
-DgroupId=org.apache.flink.quickstart \\
-DartifactId=flink-scala-project \\
-Dversion=0.1 \\
-Dpackage=org.apache.flink.quickstart \\
-DinteractivateMode=false
- 플링크 1.7 메이븐 프로젝트를 flink-scala-project에 생성
- mvn 명령의 각 파라미터 변경하면 플링크 버전, 그룹과 아티팩트 식별자(artifact id), 버전과 패키지 변경 가능
- src/ 폴더와 pom.xml 파일 포함
src \\
ㄴ main
ㄴresources
ㄴlog4j.properties
ㄴscala
ㄴorg
ㄴapache
ㄴflink
ㄴquickstart
ㄴBatchJob.scala
ㄴStreamingJob.scala
- 기본 골격이 되는 BatchJob.scala, StreamingJob.scala 필요 없을 시 삭제
- 다음 명령으로 JAR 파일 빌드
- mvn clean package -Pbuild-jar
- mvn 명령어 https://donggov.tistory.com/21
'Study > Stream Processing with Apache Flink' 카테고리의 다른 글
03-2. 아파치 플링크 아키텍처 (0) | 2024.04.25 |
---|---|
03-1. 아파치 플링크 아키텍처 (1) | 2024.04.23 |
02. 스트리밍 처리 기초 (1) | 2024.04.12 |
01. 상태가 있는 스트림 처리 소개 (1) | 2024.04.12 |