Amazon Managed Service for Apache Flink는 이전에 Amazon Kinesis Data Analytics for Apache Flink로 알려졌습니다.
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
S3 StreamingFileSink FileNotFoundExceptions
Managed Service for Apache Flink 애플리케이션은 저장 포인트에서 참조하는 진행 중인 부분 파일이 없는 경우 스냅샷에서 시작할 때 진행 중인 부분 파일 FileNotFoundException
로 실행될 수 있습니다. 이 오류 모드가 발생하면 Managed Service for Apache Flink 애플리케이션의 연산자 상태는 일반적으로 복구할 수 없으므로 SKIP_RESTORE_FROM_SNAPSHOT
을 사용하는 스냅샷 없이 다시 시작해야 합니다. 다음 예 스택트레이스를 참조하십시오.
java.io.FileNotFoundException: No such file or directory: s3://your-s3-bucket/pathj/INSERT/2023/4/19/7/_part-2-1234_tmp_12345678-1234-1234-1234-123456789012 at org.apache.hadoop.fs.s3a.S3AFileSystem.s3GetFileStatus(S3AFileSystem.java:2231) at org.apache.hadoop.fs.s3a.S3AFileSystem.innerGetFileStatus(S3AFileSystem.java:2149) at org.apache.hadoop.fs.s3a.S3AFileSystem.getFileStatus(S3AFileSystem.java:2088) at org.apache.hadoop.fs.s3a.S3AFileSystem.open(S3AFileSystem.java:699) at org.apache.hadoop.fs.FileSystem.open(FileSystem.java:950) at org.apache.flink.fs.s3hadoop.HadoopS3AccessHelper.getObject(HadoopS3AccessHelper.java:98) at org.apache.flink.fs.s3.common.writer.S3RecoverableMultipartUploadFactory.recoverInProgressPart(S3RecoverableMultipartUploadFactory.java:97) ...
StreamingFileSink
Flink는 파일 시스템에서 지원하는 파일 시스템에 레코드를 기록합니다.
체크포인트 지정 및 저장점 지정(스냅샷) 중에는 보류 중인 모든 파일의 명칭이 바뀌고 구속됩니다. 그러나 진행 중인 부분 파일은 구속되지 않고 명칭이 변경되며 해당 참조는 작업을 복원할 때 사용할 체크포인트 또는 저장점 메타데이터에 보관됩니다. 진행 중인 이러한 부분 파일은 결국 미결로 넘겨지고 후속 체크포인트 또는 저장점에서 명칭을 바꾸고 구속됩니다.
진행 중인 부분 파일이 누락되는 근본 원인과 해결 방법은 다음과 같습니다.
Apache Flink용 관리 서비스 애플리케이션을 시작하는 데 사용되는 오래된 스냅샷 — 애플리케이션이 중지되거나 업데이트될 때 생성된 최신 시스템 스냅샷만 Amazon S3에서 Apache Flink용 관리 서비스 애플리케이션을 시작하는 데 사용할 수 있습니다. StreamingFileSink 이러한 장애 클래스를 방지하려면 최신 시스템 스냅샷을 사용하십시오.
예를 들어 중지 또는 업데이트 중에 시스템 트리거 스냅샷 대신
CreateSnapshot
을 사용하여 만든 스냅샷을 선택할 때 이런 현상이 발생합니다. 이전 스냅샷의 저장 지점에는 후속 체크포인트 또는 저장점에 의해 이름이 변경되고 커밋된 진행 중인 부분 파일에 out-of-date 대한 참조가 보관됩니다.이는 최신이 아닌 Stop/Update 이벤트에서 시스템이 트리거한 스냅샷을 선택한 경우에도 발생할 수 있습니다. 시스템 스냅샷이 비활성화되었지만
RESTORE_FROM_LATEST_SNAPSHOT
을 이미 구성한 애플리케이션을 예로 들 수 있습니다. 일반적으로 Amazon S3를 사용하는 Apache Flink 애플리케이션용 관리형 서비스에서는 항상 시스템 스냅샷을 활성화하고 StreamingFileSinkRESTORE_FROM_LATEST_SNAPSHOT
구성해야 합니다.
진행 중인 부분 파일 제거 – 진행 중인 부분 파일은 S3 버킷에 있으므로 해당 버킷에 액세스할 수 있는 다른 구성 요소나 행위자에 의해 제거될 수 있습니다.
이는 앱을 너무 오랫동안 중지하고 앱의 저장 지점에서 참조하는 진행 중인 부분 파일이 S3 버킷 수명 주기 정책에 의해 제거된 경우 발생할 수 있습니다. MultiPartUpload 이러한 장애 클래스를 방지하려면 S3 버킷 MPU 수명 주기 정책이 사용 사례에 맞게 충분히 긴 기간을 포함하는지 확인하십시오.
이는 진행 중인 부분 파일을 수동으로 제거하거나 시스템의 다른 구성 요소에 의해 제거된 경우에도 발생할 수 있습니다. 이러한 오류 클래스를 방지하려면 진행 중인 부분 파일이 다른 행위자나 구성 요소에 의해 제거되지 않도록 하십시오.
저장점 이후 자동 체크포인트가 트리거되는 경쟁 조건 – 이는 Managed Service for Apache Flink 버전(최대 1.13 포함)에 영향을 미칩니다. 이 문제는 Apache Flink용 관리형 서비스 버전 1.15에서 수정되었습니다. 애플리케이션을 Apache Flink용 관리형 서비스의 최신 버전으로 마이그레이션하여 재발을 방지하세요. 또한 에서 로 마이그레이션하는 것이 좋습니다. StreamingFileSink FileSink
애플리케이션이 중지되거나 업데이트되면 Managed Service for Apache Flink는 저장점을 트리거하고 두 단계에 걸쳐 애플리케이션을 중지합니다. 두 단계 사이에 자동 체크포인트가 트리거되면 진행 중인 부분 파일의 명칭이 바뀌고 잠재적으로 구속될 수 있으므로 저장점을 사용할 수 없게 됩니다.