Python으로 Amazon Managed Service for Apache Flink 시작하기 - Managed Service for Apache Flink

Amazon Managed Service for Apache Flink(Amazon MSF)는 이전에 Amazon Kinesis Data Analytics for Apache Flink로 알려져 있었습니다.

Python으로 Amazon Managed Service for Apache Flink 시작하기

이 섹션에서는 Python과 Table API를 사용하는 Amazon Managed Service for Apache Flink의 기본 개념을 소개합니다. 애플리케이션 생성 및 테스트에 사용할 수 있는 옵션에 대해 설명합니다. 또한 이 가이드의 자습서를 완료하고 첫 번째 애플리케이션을 만드는 데 필요한 도구를 설치하는 방법에 대한 지침도 제공합니다.

Managed Service for Apache Flink 애플리케이션 구성 요소 검토

참고

Amazon Managed Service for Apache Flink는 모든 Apache Flink API를 지원합니다. 선택한 API에 따라 애플리케이션의 구조가 약간 달라집니다. Python에서 Apache Flink 애플리케이션을 개발할 때 흔히 사용하는 방식 중 하나는 Python 코드에 임베딩된 SQL로 애플리케이션 흐름을 정의하는 것입니다. 이는 다음 시작하기 자습서에서 사용하는 접근 방식입니다.

Managed Service for Apache Flink 애플리케이션은 데이터를 처리하기 위해 Python 스크립트를 사용해 입력을 처리하고 출력을 생성하는 데이터 흐름을 Apache Flink 런타임으로 정의합니다.

일반적인 Managed Service for Apache Flink 애플리케이션은 다음 구성 요소로 이루어져 있습니다.

  • 런타임 속성: 애플리케이션 코드를 다시 컴파일하지 않고도 런타임 속성을 사용하여 애플리케이션을 구성할 수 있습니다.

  • 소스: 애플리케이션은 하나 이상의 소스에서 데이터를 소비합니다. 소스는 커넥터를 사용하여 Kinesis 데이터 스트림 또는 Amazon MSK 주제와 같은 외부 시스템에서 데이터를 읽습니다. 애플리케이션 내부에서 데이터를 생성하기 위해 특수 커넥터를 사용할 수도 있습니다. SQL을 사용하는 경우 애플리케이션은 소스를 소스 테이블로 정의합니다.

  • 변환: 애플리케이션은 하나 이상의 변환을 사용해 데이터를 처리하며 이러한 변환은 데이터를 필터링, 보강 또는 집계할 수 있습니다. SQL을 사용하는 경우 애플리케이션은 변환을 SQL 쿼리로 정의합니다.

  • 싱크: 애플리케이션이 싱크를 통해 외부 소스로 데이터를 전송합니다. 싱크는 커넥터를 사용하여 Kinesis 데이터 스트림, Amazon MSK 주제, Amazon S3 버킷, 관계형 데이터베이스와 같은 외부 시스템으로 데이터를 전송합니다. 개발용으로 출력을 인쇄하는 특수 커넥터도 사용할 수 있습니다. SQL을 사용하는 경우 애플리케이션은 결과를 삽입하는 싱크를 싱크 테이블로 정의합니다. 자세한 내용은 Managed Service for Apache Flink에서 싱크를 사용하여 데이터 쓰기 섹션을 참조하세요.

Python 애플리케이션은 추가 Python 라이브러리나 애플리케이션에서 사용하는 Flink 커넥터 등의 외부 종속성이 필요할 수 있습니다. 애플리케이션을 패키징할 때는 애플리케이션이 필요로 하는 모든 종속성을 포함해야 합니다. 이 자습서는 커넥터 종속성을 포함하는 방법과 Amazon Managed Service for Apache Flink에 배포할 애플리케이션을 패키징하는 방법을 설명합니다.

사전 조건 이행

이 자습서를 완료하려면 다음과 같은 사전 조건이 필요합니다.

  • Python 3.11을 사용하되, 가능하면 VirtualEnv(venv), Conda 또는 Miniconda.와 같은 독립 환경을 사용하는 것이 좋습니다.

  • Git 클라이언트 - 아직 설치하지 않았으면 Git 클라이언트를 설치합니다.

  • Java Development Kit(JDK) 버전 11 - Java JDK 11을 설치하고 설치 위치를 가리키도록 JAVA_HOME 환경 변수를 설정합니다. JDK 11이 없는 경우 Amazon Corretto 또는 선택한 표준 JDK를 사용할 수 있습니다.

    • JDK가 올바르게 설치되었는지 확인하려면 다음 명령을 실행합니다. Amazon Corretto 11이 아닌 JDK를 사용하는 경우 출력이 다를 수 있습니다. 버전이 11.x인지 확인하세요.

      $ java --version openjdk 11.0.23 2024-04-16 LTS OpenJDK Runtime Environment Corretto-11.0.23.9.1 (build 11.0.23+9-LTS) OpenJDK 64-Bit Server VM Corretto-11.0.23.9.1 (build 11.0.23+9-LTS, mixed mode)
  • Apache Maven - 아직 설치하지 않았으면 Apache Maven을 설치합니다. 자세한 내용은 Apache Maven 설치를 참조하세요.

    • Apache Maven 설치를 테스트하려면 다음 명령을 실행합니다.

      $ mvn -version
참고

애플리케이션은 Python으로 작성되었지만 Apache Flink는 Java Virtual Machine(JVM)에서 실행됩니다. Kinesis 커넥터 등 대부분의 종속성은 JAR 파일로 배포됩니다. 이러한 종속성을 관리하고 애플리케이션을 ZIP 파일로 패키징하기 위해 Apache Maven을 사용합니다. 이 자습서에서 그 방법을 설명합니다.

주의

로컬 개발에는 Python 3.11을 사용하는 것을 권장합니다. 이는 Flink 런타임 1.19와 함께 Amazon Managed Service for Apache Flink에서 사용하는 Python 버전과 동일합니다.

Python 3.12에서는 Python Flink 라이브러리 1.19 설치가 실패할 수 있습니다.

기본 Python 버전이 다른 경우, Python 3.11을 사용해 VirtualEnv와 같은 독립 실행형 환경을 생성할 것을 권장합니다.

로컬 개발을 위한 IDE

애플리케이션을 개발하고 컴파일하려면 PyCharm 또는 Visual Studio Code와 같은 개발 환경을 사용하는 것이 좋습니다.

그런 다음 Amazon Managed Service for Apache Flink(DataStream API) 시작하기의 처음 두 단계를 완료합니다.

시작하려면 애플리케이션 만들기 섹션을 참조하세요.