기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon Managed Service for Apache Flink 2.2
Amazon Managed Service for Apache Flink는 이제 Apache Flink 버전 2.2를 지원합니다. 서비스에 대한 첫 번째 메이저 버전 업그레이드입니다. 이 페이지에서는 Flink 2.2에 도입된 기능과 Flink 1.x에서 업그레이드하기 위한 중요한 고려 사항을 다룹니다.
참고
Flink 2.2에는 신중한 계획이 필요한 주요 변경 사항이 도입되었습니다. 1.x에서 업그레이드Flink 2.2 업그레이드를 위한 상태 호환성 가이드하기 전에 아래 및의 주요 변경 사항 및 사용 중단의 전체 목록을 검토합니다.
Amazon Managed Service for Apache Flink 2.2의 새로운 기능
Amazon Managed Service for Apache Flink 2.2는 업그레이드 시 기존 애플리케이션을 손상시킬 수 있는 동작 변경을 도입합니다. 다음 섹션의 Flink API 변경 사항과 함께 주의 깊게 검토하세요.
프로그래밍 방식 구성 처리
MSF Flink 2.2는 이제 고객이
env.getConfig().set()또는 유사한 APIs를 통해 MSF에서 지원하지 않는 구성을 수정하려고 할 때 예외를 보고합니다. 프로그래밍 방식 Flink 구성 속성을(를) 참조하세요.고객은 여전히 지원 티켓을 통해 특정 구성 변경을 요청할 수 있습니다(수정 가능한 설정 참조).
지표 제거
Flink
fullRestarts2.2에서 지표가 제거되었습니다. 대신numRestarts지표를 사용합니다.KDS 커넥터에 대한 지표는 Flink AWS 커넥터 버전
bytesRequestedPerFetch6.0.0(Flink 2.2와 호환되는 커넥터 버전만 해당)에서 제거되었습니다.uptime및downtime지표는 모두 Flink 2.2에서 더 이상 사용되지 않는 것으로 표시되며 곧 제거될 예정입니다. 를 새 지표uptime로 바꿉니다runningTime.downtime를restartingTime,cancellingTime및 중 하나 이상으로 바꿉니다failingTime.
자격 증명이 아닌 IMDS 호출 차단됨
이러한 허용된 엔드포인트는 AWS SDK의 DefaultCredentialsProvider(
/latest/meta-data/iam/security-credentials/) 및 DefaultAwsRegionProviderChain(/latest/dynamic/instance-identity/document)에서 애플리케이션에 대한 자격 증명과 리전을 자동으로 구성하는 데 사용됩니다.비보안 인증 IMDS 호출(예:
EC2MetadataUtils.getInstanceId(),EC2MetadataUtils.getInstanceType()EC2MetadataUtils.getLocalHostName(), 또는EC2MetadataUtils.getAvailabilityZone())에 의존하는 AWS SDK 함수를 사용하는 애플리케이션은 이러한 호출을 시도할 때 HTTP 4xx 오류를 수신합니다.애플리케이션이 인스턴스 메타데이터 또는 허용된 경로 외부의 기타 정보에 IMDS를 사용하는 경우 대신 환경 변수 또는 애플리케이션 구성을 사용하도록 코드를 리팩터링합니다.
읽기 전용 루트 파일 시스템
보안을 개선하기 위해이 아닌 모든 종속성이 기본 flink 작업 디렉터리
/tmp인 경우가 발생합니다java.io.FileNotFoundException: /{path}/{filename} (Read-only file system).파일 시스템 종속성은 코드에서 직접 시작하거나 종속성에 포함된 라이브러리에서 간접적으로 시작될 수 있습니다. 코드
/tmp/에서 직접 파일 시스템 종속성을 로 재정의합니다. 라이브러리의 간접 파일 시스템 종속성의 경우 라이브러리 구성 재정의를 사용하여 파일 시스템 작업을 로 리디렉션합니다/tmp/.
주요 변경 사항 및 사용 중단
다음은 Managed Service for Apache Flink 2.2에 도입된 주요 변경 사항 및 사용 중단에 대한 요약입니다. 이러한 주요 변경 사항을 도입하는 Apache Flink 2.0
Flink API 및 언어 제거
DataSet API 제거됨
배치 처리를 위한 레거시 DataSet API가 Flink 2.0 이상에서 완전히 제거되었습니다. 이제 모든 배치 처리에서 통합 DataStream API를 사용해야 합니다.
업그레이드하기 전에 DataSet API를 사용하는 애플리케이션을 DataStream API로 마이그레이션해야 합니다. DataSet에서 DataStream으로의 변환에 대한 Apache Flink 마이그레이션 가이드
참조
Java 11 및 Python 3.8 제거됨
Java 11 지원은 완전히 제거되었습니다. Java 17이 기본이며 권장되는 런타임입니다.
Python 3.8 지원이 제거되었습니다. 이제 Python 3.12가 기본값입니다.
레거시 커넥터 클래스 제거됨
레거시
SourceFunction및SinkFunction인터페이스는 새로운 통합 소스(FLIP-27) 및 싱크(FLIP-143) APIs로 대체되었으며, 이는 경계/비경계 이중성, 향상된 체크포인트 조정 및 더 깨끗한 프로그래밍 모델에 대한 더 나은 지원을 제공합니다.Kinesis Data Streams의 경우
KinesisStreamsSink의KinesisStreamsSource및를 사용합니다flink-connector-aws-kinesis-streams:6.0.0-2.0.
Scala API 제거됨
Flink Scala API가 제거되었습니다. Flink의 Java API는 이제 JVM 기반 애플리케이션에 지원되는 단일 API입니다.
애플리케이션이 Scala로 작성된 경우 Scala 코드에서 Flink의 Java API를 계속 사용할 수 있습니다. 주요 변경 사항은 Scala별 래퍼와 암시적 변환을 더 이상 사용할 수 없다는 것입니다. Scala 애플리케이션 업데이트에 대한 자세한 내용은 애플리케이션 및 Flink 버전 업그레이드를
참조하세요.
상태 호환성 고려 사항
버전 2.24에서 5.6으로 업그레이드된 Kryo serializer는 상태 호환성 문제를 일으킬 수 있습니다.
컬렉션(
HashMap,ArrayList,HashSet)이 있는 POJOs에는 상태 호환성 문제가 있을 수 있습니다.Avro 및 Protobuf 직렬화는 영향을 받지 않습니다.
애플리케이션의 위험 수준을 분류하기 Flink 2.2 업그레이드를 위한 상태 호환성 가이드 위한 자세한 평가는 섹션을 참조하세요.
Apache Flink 2.2 기능 지원
런타임 및 언어 지원
| 기능 | 설명 | 설명서 |
|---|---|---|
| Java 17 런타임 | Java 17이 이제 기본이며 권장되는 런타임입니다. Java 11 지원이 제거되었습니다. | Java 호환성 |
| Python 3.12 지원 | 이제 Python 3.12가 지원되고 Python 3.8 지원이 제거되었습니다. | PyFlink 설명서 |
상태 관리 및 성능
SQL 및 Table API 기능
| 기능 | 설명 | 설명서 |
|---|---|---|
| 변형 데이터 형식 | 반복 문자열 구문 분석 없이 반정형 데이터(JSON)를 기본적으로 지원합니다. | 데이터 형식 |
| 델타 조인 | 각 키의 최신 버전만 유지하여 스트리밍 조인의 상태 요구 사항을 줄입니다. 고객 관리형 인프라(예: Apache Fluss)가 필요합니다. | 조인 |
| StreamingMultiJoinOperator | 멀티웨이 조인을 단일 연산자로 실행하여 중간 구체화를 제거합니다. | FLIP-516 |
| ProcessTableFunction(PTF) | 키별 상태 및 타이머를 사용하여 SQL에서 직접 상태 저장 이벤트 기반 로직을 활성화합니다. | 사용자 정의 함수 |
| ML_PREDICT 함수 | SQL에서 직접 스트리밍/배치 테이블에서 등록된 ML 모델을 호출합니다. 고객이 ModelProvider 구현을 번들링해야 합니다(예: flink-model-openai). ModelProvider 라이브러리는 Managed Service for Apache Flink에서 제공되지 않습니다. |
ML 예측 |
| 모델 DDL | CREATE MODEL 문을 사용하여 ML 모델을 일급 카탈로그 객체로 정의합니다. | CREATE 문 |
| 벡터 검색 | Flink SQL API는 벡터 데이터베이스 검색을 지원합니다. 현재 오픈 소스 VectorSearchTableSource 구현은 사용할 수 없습니다. 고객은 자체 구현을 제공해야 합니다. |
Flink SQL |
DataStream API 기능
커넥터 가용성
Flink 2.2로 업그레이드할 때 커넥터 종속성을 Flink 2.2 런타임과 호환되는 버전으로 업데이트해야 합니다. Flink 커넥터는 Flink 런타임과 독립적으로 릴리스되며 일부 커넥터에는 아직 Flink 2.2 호환 릴리스가 없습니다. 다음 표에는 Amazon Managed Service for Apache Flink에서 일반적으로 사용되는 커넥터의 가용성이 요약되어 있습니다.
| 커넥터 | Flink 1.20 버전 | Flink 2.0 이상 버전 | 참고 |
|---|---|---|---|
| Apache Kafka | flink-connector-kafka 3.4.0-1.20 | flink-connector-kafka 4.0.0-2.0 | Flink 2.2에 권장 |
| Kinesis Data Streams(소스) | flink-connector-kinesis 5.0.0-1.20 | flink-connector-aws-kinesis-streams 6.0.0-2.0 | Flink 2.2에 권장 |
| Kinesis Data Streams(싱크) | flink-connector-aws-kinesis-streams 5.1.0-1.20 | flink-connector-aws-kinesis-streams 6.0.0-2.0 | Flink 2.2에 권장 |
| Amazon Data Firehose | flink-connector-aws-kinesis-firehose 5.1.0-1.20 | flink-connector-aws-kinesis-firehose 6.0.0-2.0 | Flink 2.0과 호환 |
| Amazon DynamoDB | flink-connector-dynamodb 5.1.0-1.20 | flink-connector-dynamodb 6.0.0-2.0 | Flink 2.0과 호환 |
| Amazon SQS | flink-connector-sqs 5.1.0~1.20 | flink-connector-sqs 6.0.0-2.0 | Flink 2.0과 호환 |
| FileSystem(S3, HDFS) | Flink와 번들로 제공 | Flink와 번들로 제공 | Flink 배포에 내장 - 항상 사용 가능 |
| JDBC | flink-connector-jdbc 3.3.0-1.20 | 2.x에 대해 아직 릴리스되지 않음 | Flink 2.x 호환 릴리스 사용 불가 |
| OpenSearch | flink-connector-opensearch 1.2.0-1.19 | 2.x에 대해 아직 릴리스되지 않음 | Flink 2.x 호환 릴리스 사용 불가 |
| Elasticsearch | 레거시 커넥터만 해당 | 2.x에 대해 아직 릴리스되지 않음 | OpenSearch 커넥터로 마이그레이션 고려 |
| – Amazon Managed Service for Prometheus | flink-connector-prometheus 1.0.0-1.20 | 2.x에 대해 아직 릴리스되지 않음 | Flink 2.x 호환 릴리스 사용 불가 |
애플리케이션이 아직 Flink 2.x 릴리스가 없는 커넥터에 의존하는 경우 커넥터가 호환 버전을 릴리스할 때까지 기다리거나 대체 버전으로 대체할 수 있는지(예: JDBC 카탈로그 또는 사용자 지정 싱크 사용) 평가하는 두 가지 옵션이 있습니다.
커넥터 버전을 업데이트할 때 아티팩트 이름 변경에 유의하세요. 일부 커넥터는 메이저 버전 간에 이름이 변경되었습니다(예: Firehose 커넥터가 일부 중간 버전
flink-connector-aws-firehose에서에서flink-connector-aws-kinesis-firehose로 변경됨).Amazon Managed Service for Apache Flink 커넥터 설명서에서 대상 런타임에서 지원되는 정확한 아티팩트 이름 및 버전을 항상 확인하세요.
지원되지 않는 실험 기능
Amazon Managed Service for Apache Flink 2.2에서는 다음 기능이 지원되지 않습니다.
구체화된 테이블: 지속적으로 유지 관리되고 쿼리 가능한 테이블 스냅샷.
사용자 지정 원격 측정 변경: 사용자 지정 지표 리포터 및 원격 측정 구성.
ForSt 상태 백엔드: 분해된 상태 스토리지(오픈 소스의 실험적).
Java 21: Managed Service for Apache Flink에서 지원되지 않는 오픈 소스에서의 실험 지원.
알려진 문제
Amazon Managed Service for Apache Flink Studio
Amazon Managed Service for Apache Flink의 Flink 2.2는 Studio 애플리케이션을 지원하지 않습니다. 자세한 내용은 Studio 노트북 생성을 참조하세요.
Kinesis 커넥터 EFO
커넥터 v5.0.0 및 v6.0.0에 도입된 EFO(Enhanced Fan-Out/SubscribeToShard) 경로와
KinesisStreamsSource함께를 사용하는 애플리케이션은 Kinesis 스트림이 리샤딩될 때 실패할 수 있습니다. 이는 커뮤니티에서 알려진 문제입니다. 자세한 내용은 FLINK-37648을 참조하세요. 커넥터 v5.0.0 및 v6.0.0에 도입된
KinesisStreamsSourceEFO(Enhanced Fan-Out/SubscribeToShard) 경로를와 함께 사용하는 애플리케이션은 Flink 애플리케이션에 역압이 가해지면 교착 상태가 발생하여 하나 이상의 TaskManager에서 데이터 처리가 완전히 중지될KinesisStreamsSink수 있습니다. TaskManagers 애플리케이션을 복구하려면 강제 중지 작업과 애플리케이션 시작 작업이 필요합니다. 커뮤니티에서 알려진 문제의 하위 사례입니다. 자세한 내용은 FLINK-34071을 참조하세요.
업그레이드 경험
Amazon Managed Service for Apache Flink는 애플리케이션 구성, 로그, 지표, 태그 및 상태 및 바이너리가 호환되는 경우 애플리케이션 상태를 보존하는 인플레이스 버전 업그레이드를 지원합니다. 단계별 지침은 Flink 2.2로 업그레이드: 전체 가이드섹션을 참조하세요.
업그레이드 중에 상태 호환성 위험을 평가하고 호환되지 않는 상태를 처리하는 방법에 대한 지침은 섹션을 참조하세요Flink 2.2 업그레이드를 위한 상태 호환성 가이드.
다음 단계
Flink 2.2를 처음 사용하시나요? 자세한 Apache Flink 2.2 설명서는 Apache Flink 2.2 설명서를
참조하세요. 업그레이드를 계획하고 있나요? Flink 2.2로 업그레이드: 전체 가이드 섹션을 참조하세요
상태 호환성 문제? Flink 2.2 업그레이드를 위한 상태 호환성 가이드 섹션을 참조하세요
질문이나 문제는 섹션을 참조Managed Service for Apache Flink 문제 해결하거나 AWS Support에 문의하세요.