Amazon Kinesis Data Analytics 애플리케이션의 체크포인트가 실패하는 이유는 무엇입니까?

최종 업데이트 날짜: 2022년 2월 25일

Amazon Kinesis Data Analytics 애플리케이션의 체크포인트 또는 세이브포인트에서 오류가 발생합니다.

간략한 설명

체크포인트는 Apache Flink용 Amazon Kinesis Data Analytics에서 내결함성을 구현하는 데 사용되는 방법입니다. 애플리케이션이 최적화되지 않았거나 제대로 프로비저닝되지 않으면 체크포인트 오류가 발생할 수 있습니다.

체크포인트 실패의 주요 원인 중 일부는 다음과 같습니다.

  • Rocks DB의 경우 Apache Flink는 로컬 스토리지에서 파일을 읽고 원격 영구 스토리지, 즉 Amazon Simple Storage Service(Amazon S3)에 파일을 작성합니다. 로컬 디스크의 성능과 업로드 속도는 체크포인트에 영향을 미치고 체크포인트 실패를 초래할 수 있습니다.
  • 세이브포인트 및 체크포인트 상태는 AWS에서 완전히 관리하는 서비스 소유 Amazon S3 버킷에 저장됩니다. 애플리케이션에 대한 장애를 조치할 때마다 이러한 상태에 액세스합니다. 이 S3 버킷의 일시적인 서버 오류 또는 지연 시간으로 인해 체크포인트 오류가 발생할 수 있습니다.
  • 체크포인팅 중에 함수가 Amazon DynamoDB와 같은 외부 리소스와 통신하는 위치에서 생성한 프로세스 함수는 체크포인트 실패를 초래할 수 있습니다.
  • 수신 데이터와 직렬화 항목이 일치하지 않는 등 상태의 직렬화로 인한 실패로 인해 체크포인트 오류가 발생할 수 있습니다.
  • 애플리케이션에서 프로비저닝된 Kinesis Processing Unit(KPU) 수가 충분하지 않을 수 있습니다. 할당된 KPU를 찾으려면 다음 계산을 사용하십시오.
    애플리케이션에 할당된 KPU = 병렬 처리/ParallelismPerKPU
  • 애플리케이션 상태 크기가 클수록 체크포인트 지연 시간이 늘어날 수 있습니다. 이는 작업 관리자가 체크포인트를 저장하는 데 더 많은 시간이 걸리므로 메모리 부족 예외가 발생할 수 있기 때문입니다.
  • 상태 분포가 왜곡되면 한 작업 관리자가 다른 작업 관리자에 비해 더 많은 데이터를 처리할 수 있습니다. 충분한 KPU(리소스)가 프로비저닝되더라도 하나 이상의 오버로드된 작업 관리자가 메모리 부족 예외를 유발할 수 있습니다.
  • 카디널리티가 높다는 것은 수신 데이터에 대량의 고유 키가 있음을 나타냅니다. 작업에서 KeyBy 연산자를 사용하여 수신 데이터를 분할하고 데이터가 분할된 키의 카디널리티가 높으면 체크포인팅이 느려질 수 있습니다. 이로 인해 체크포인트 실패가 발생할 수 있습니다.

해결 방법

  • 애플리케이션 상태의 크기가 급격히 증가하여 체크포인트 크기와 지속 시간이 늘어날 수 있습니다. Amazon CloudWatch 지표 lastCheckPointDurationlastCheckpointSize를 사용하여 이러한 값을 모니터링할 수 있습니다. 자세한 내용은 애플리케이션 지표를 참조하십시오.
  • 더 많은 데이터를 처리하는 연산자의 병렬 처리를 증가시킵니다. setParallelism() 방법을 호출하여 개별 연산자, 데이터 원본 또는 데이터 싱크에 대한 병렬 처리를 정의할 수 있습니다.
  • KPU를 최적으로 활용하기 위해 병렬 처리 및 ParallelismPerKPU의 값을 조정합니다. Amazon Kinesis Data Analytics 애플리케이션에 대해 자동 크기 조정이 해제되어 있지 않은지 확인하십시오. maxParallelism 매개 변수의 값을 사용하면 원하는 수의 KPU로 확장할 수 있습니다. 자세한 내용은 Apache Flink용 Kinesis Data Analytics의 애플리케이션 크기 조정 단원을 참조하세요.
  • 상태에 대한 TTL을 정의하여 상태가 주기적으로 정리되도록 합니다.
  • 더 나은 파티셔닝 전략을 사용할 수 있도록 코드를 최적화합니다. 파티셔닝 리밸런싱을 사용하여 데이터를 고르게 분산할 수 있습니다. 이 방법은 라운드 로빈 방법을 사용하여 배포합니다.
  • 코드를 최적화하여 창의 크기를 줄이면 해당 창에 있는 키 수의 카디널리티가 줄어듭니다.

이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요하세요?