Flink에서 Kinesis Data Streams로 작성할 때 발생하는 시간 초과 오류를 해결하려면 어떻게 해야 하나요?

2분 분량
0

Flink에서 Amazon Kinesis Data Streams로 데이터를 쓸 때 시간 초과 또는 예외 오류가 발생합니다.

간략한 설명

FlinkKinesisProducer를 사용하는 Flink 응용 프로그램은 다음 오류 메시지 중 하나를 생성할 수 있습니다.
"Caused by: org.apache.flink.kinesis.shaded.org.apache.http.conn.ConnectTimeoutException: kinesis.us-east-1.amazonaws.com:443 [kinesis.us-east-1.amazonaws.com/xxx.xxx.xxxx.xxx]에 연결 실패: 연결 시간 초과됨"

-또는-

"[AWS Log: ERROR](CurlHttpClient)Curl returned error code 28"

Flink 응용 프로그램이 실행되는 환경의 네트워크 문제 및 시스템 리소스 부족으로 인해 이러한 시간 초과 오류가 발생할 수 있습니다.

해결 방법

Kinesis Data Streams 서비스 엔드포인트에 연결할 수 없습니다

Flink 애플리케이션이 Data Streams 서비스 엔드포인트에 연결할 수 없는 경우 다음과 비슷한 오류가 발생합니다.

"Caused by: org.apache.flink.kinesis.shaded.org.apache.http.conn.ConnectTimeoutException: kinesis.us-east-1.amazonaws.com에 연결: 443 [ kinesis.us-east-1.amazonaws.com/xxx.xxxx.xxx] 실패:연결 시간 초과"

이 오류가 반복해서 발생하는 경우 네트워크 구성에 문제가 있을 수 있습니다.

이 문제를 해결하려면, 다음 단계를 완료하세요.

  1. Flink 애플리케이션이 인터넷에 연결할 수 있는지 확인합니다.
  2. Flink 애플리케이션이 가상 프라이빗 클라우드(VPC)의 AWS 리소스에서 실행되는 경우 다음 VPC 기능이 올바르게 구성되었는지 확인하세요.
    라우팅 테이블
    보안 그룹
    네트워크 액세스 제어 목록(네트워크 ACL)
  3. (선택 사항)데이터 스트림의 VPC 엔드포인트를 사용하여 VPC 내에서 통신합니다.

제출된 요청에 대한 응답이 구성된 제한 시간 내에 반환되지 않았습니다

Curl 28 오류는 제출된 요청에 대한 응답이 구성된 제한 시간 내에 반환되지 않아 시간 초과 오류가 발생했음을 나타냅니다. 오류는 다음과 비슷합니다.

"[AWS Log: ERROR](CurlHttpClient)Curl returned error code 28"

일시적인 네트워크 문제로 인해 시간 초과가 발생할 수 있습니다. 또는 기록이 Kinesis Producer Library(KPL) 대몬으로 전송되는 Data Streams에 대해 보류 중인 요청이 너무 많아서 시간 초과가 일어날 수 있습니다. FlinkKinesisProducer는 KPL을 사용하여 Flink 스트림에서 Amazon Kinesis 스트림으로 데이터를 전송하기 때문에 기록이 KPL로 전송됩니다.

이 문제를 해결하려면 FlinkKinesisProducer 객체의 시간 초과 요청 시간을 증가시키세요.

Request timeout period: producerConfig.put ("RequestTimeout", "\*\*\*\*"); I

데이터 손실을 방지하기 위해 setQueueLimitRecordTtl 매개 변수를 업데이트하는 것도 좋습니다.

Internal Queue Size: FlinkKinesisProducer #setQueueLimit (queueLimit)
time-to-live on records: producerConfig.put("RecordTtl", "*****");

setQueueLimit의 값을 계산하는 방법에 대한 자세한 내용은 Flink 웹 사이트의 배압 모니터링을 참조하세요.

AWS 공식
AWS 공식업데이트됨 10달 전