소프트웨어 요구 사항

  • 많은 플링크 개발자가 선호하는 환경인 유닉스 기반으로 설정 시 여러 도구 사용 가능해 편리
  • 플링크 DataStream API는 자바와스칼라에서 사용 가능
    • 자바 JDK(8또는 그 이상의 버전) 필수
  • 플링크 애플리케이션 개발에 필수는 아니지만 아래 소프트웨어 설치됐다고 가정
    • 아파치 메이븐 3.x.
    • 자바나 스칼라 개발용 IDE

 

 

IDE에서 플링크 애플리케이션 실행과 디버깅

  • 플링크가 분산 데이터 처리 시스템이긴 하지만 로컬 머신에서도 개발과 기본 테스트가능

 

 

IDE에서 예제 코드 불러오기

 

 

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 파일 빌드

+ Recent posts