기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
대형 레코드 처리
Amazon Kinesis Data Streams는 최대 10메비바이트(MiB)의 레코드를 지원합니다. 이 기능은 기본 1MiB 레코드 크기 제한을 초과하는 간헐적인 데이터 페이로드 처리 작업에 권장됩니다. 기존 스트림과 새로 생성된 스트림의 기본 최대 레코드 크기는 1MiB로 설정됩니다.
이 기능은 사물 인터넷(IoT) 애플리케이션, 변경 데이터 캡처(CDC) 파이프라인, 가끔 더 큰 데이터 페이로드를 처리해야 하는 기계 학습 워크플로에 유용합니다. 스트림에서 대형 레코드 사용을 시작하려면 스트림의 최대 레코드 크기 제한을 업데이트합니다.
중요
쓰기의 경우 1MB/s, 읽기의 경우 2MB/s의 개별 샤드 처리량 제한은 더 큰 레코드 크기를 지원하더라도 변경되지 않습니다. Kinesis Data Streams는 1MiB 이하 레코드의 기준 트래픽과 함께 간헐적으로 대형 레코드를 수용하도록 설계되었습니다. 지속적으로 대량의 대형 레코드 수집을 수용하도록 설계되지 않았습니다.
대형 레코드를 사용하도록 스트림 업데이트
Kinesis Data Streams로 대용량 레코드를 처리하려면
Kinesis Data Streams 콘솔로 이동합니다.
스트림을 선택하고 구성 탭으로 이동합니다.
최대 레코드 크기 옆에 있는 편집을 클릭합니다.
최대 레코드 크기(최대 10MiB)를 설정합니다.
변경 내용을 저장합니다.
이 설정은 이 Kinesis Data Streams의 최대 레코드 크기만 조정합니다. 이 제한을 늘리기 전에 모든 다운스트림 애플리케이션이 더 큰 레코드를 처리할 수 있는지 확인합니다.
AWS CLI를 사용하여이 설정을 업데이트할 수도 있습니다.
aws kinesis update-max-record-size \ --stream-arn \ --max-record-size-in-ki-b 5000
대형 레코드로 스트림 성능 최적화
대형 레코드는 전체 트래픽의 2% 미만으로 유지하는 것이 좋습니다. 스트림에서 각 샤드의 처리량 용량은 초당 1MiB입니다. 대형 레코드를 수용하기 위해 Kinesis Data Streams은 최대 10MiB까지 버스트하며 초당 평균은 1MiB 수준입니다. 대형 레코드를 지원하는 이 용량은 스트림에 지속적으로 다시 채워집니다. 리필 속도는 대형 레코드의 크기와 기준 레코드의 크기에 따라 달라집니다. 최상의 결과를 얻으려면 균일하게 분산된 파티션 키를 사용합니다. Kinesis 온디맨드 조정 방법에 대한 자세한 내용은 On-demand mode features and use cases 섹션을 참조하세요.
대형 레코드로 스로틀링 완화
스로틀링을 완화하려면
생산자 애플리케이션에서 지수 백오프를 사용하여 재시도 로직을 구현합니다.
무작위 파티션 키를 사용하여 사용 가능한 샤드에 대형 레코드를 분산합니다.
Amazon S3에 페이로드를 저장하고 대형 레코드의 연속 스트림을 위해 스트림에 대한 메타데이터 참조만 전송합니다. 자세한 내용은 Processing large records with Amazon Kinesis Data Streams
섹션을 참조하세요.
Kinesis Data Streams API를 사용하여 대형 레코드 처리
대형 레코드 지원은 하나의 새로운 API를 도입하고 두 개의 기존 컨트롤 플레인 API를 업데이트하여 최대 10MiB의 레코드를 처리합니다.
레코드 크기 수정을 위한 API:
UpdateMaxRecordSize: 기존 스트림의 최대 레코드 크기 제한을 최대 10MiB로 구성합니다.
기존 API 업데이트:
CreateStream: 스트림 생성 중에 레코드 크기 제한을 설정하기 위한 선택적MaxRecordSizeInKiB파라미터를 추가합니다.DescribeStreamSummary:MaxRecordSizeInKiB필드를 반환하여 현재 스트림 구성을 표시합니다.
나열된 모든 API는 기존 스트림에서 이전 버전과의 호환성을 유지합니다. 전체 API 설명서는 Amazon Kinesis Data Streams Service API Reference 섹션을 참조하세요.
AWS 대용량 레코드와 호환되는 구성 요소
다음 AWS 구성 요소는 대용량 레코드와 호환됩니다.
| 구성 요소 | 설명 |
|---|---|
|
AWS SDK |
AWS SDK는 대용량 레코드 처리를 지원합니다. SDK에서 사용 가능한 메서드를 사용하여 스트림의 최대 레코드 크기를 최대 10MiB까지 업데이트할 수 있습니다. AWS SDKs 자세한 내용은 AWS SDK에서이 서비스 사용을 참조하세요. |
|
Kinesis Consumer Library(KCL) |
KCL은 버전 2.x부터 대형 레코드 처리를 지원합니다. 대형 레코드 지원을 사용하려면 스트림의 |
|
Kinesis Producer Library(KPL) |
KPL은 버전 1.0.5부터 대형 레코드 처리를 지원합니다. 대형 레코드 지원을 사용하려면 스트림의 maxRecordSize를 업데이트하고 KPL을 사용합니다. 자세한 내용은 Develop producers using the Amazon Kinesis Producer Library (KPL) 섹션을 참조하세요. |
|
Amazon EMR |
Apache Spark가 포함된 Amazon EMR을 Kinesis Data Streams 한도(10MiB)까지의 대형 레코드 처리를 지원합니다. 대형 레코드 지원을 사용하려면 |
|
Amazon Data Firehose |
Kinesis Data Streams와 함께 사용할 경우 Amazon Data Firehose의 대형 레코드 처리 동작은 전송 대상에 따라 달라집니다.
대형 레코드를 Snowflake 또는 Redshift로 전송해야 하는 애플리케이션의 경우 먼저 Amazon S3로 데이터를 전송합니다. 그런 다음 추출, 변환, 로드(ETL) 프로세스를 사용하여 데이터를 로드합니다. 다른 모든 대상의 경우 프로덕션 사용량으로 조정하기 전에 개념 증명 환경에서 대형 레코드로 동작을 테스트합니다. 대형 레코드 처리는 대상에 따라 다릅니다. |
|
AWS Lambda |
AWS Lambda 는 최대 6MiBs의 페이로드를 지원합니다. 이 제한에는 base-64 인코딩으로 변환된 Kinesis 페이로드와 이벤트 소스 매핑(ESM)과 연결된 메타데이터가 포함됩니다. 6MiB 미만의 레코드의 경우 Lambda는 ESM을 사용하여 레코드를 처리하며 추가 구성이 필요하지 않습니다. 6MiB보다 큰 레코드의 경우 Lambda는 실패 시 대상을 사용하여 레코드를 처리합니다. Lambda의 처리 한도를 초과하는 레코드를 처리하려면 ESM을 사용하여 실패 시 대상을 구성해야 합니다. 실패 시 대상으로 전송된 각 이벤트는 실패한 간접 호출에 대한 메타데이터를 포함하는 JSON 문서입니다. 레코드 크기와 관계없이 ESM에서 실패 시 대상을 생성하는 것이 좋습니다. 이렇게 하면 레코드가 폐기되지 않습니다. 자세한 내용은 Configuring destinations for failed invocations 섹션을 참조하세요. |
|
Amazon Redshift |
Amazon Redshift는 Kinesis Data Streams에서 데이터를 스트리밍할 때 1MiB 미만의 레코드 크기만 지원합니다. 이 한도를 초과하는 레코드는 처리되지 않습니다. 처리되지 않은 레코드는 |
|
Kinesis Data Streams용 Flink 커넥터 |
Kinesis Data Streams에서 데이터를 사용하는 방법으로 Kinesis 소스 커넥터와 Kinesis 싱크 커넥터라는 두 가지 방법이 있습니다. 소스 커넥터는 1MiB 미만, 최대 10MiB의 레코드 처리를 지원합니다. 1MiB보다 큰 레코드에는 싱크 커넥터를 사용하지 마세요. 자세한 내용은 Use connectors to move data in Amazon Managed Service for Apache Flink with the DataStream API 섹션을 참조하세요. |
대형 레코드가 지원되는 리전
이 Amazon Kinesis Data Streams 기능은 다음 AWS 리전에서만 사용할 수 있습니다.
| AWS 리전 | 리전 이름 |
|---|---|
|
eu-north-1 |
유럽(스톡홀름) |
|
me-south-1 |
Middle East (Bahrain) |
|
ap-south-1 |
아시아 태평양(뭄바이) |
|
eu-west-3 |
유럽(파리) |
|
ap-southeast-3 |
아시아 태평양(자카르타) |
|
us-east-2 |
미국 동부(오하이오) |
|
af-south-1 |
아프리카(케이프타운) |
|
eu-west-1 |
유럽(아일랜드) |
|
me-central-1 |
중동(UAE) |
|
eu-central-1 |
유럽(프랑크푸르트) |
|
sa-east-1 |
남아메리카(상파울루) |
|
ap-east-1 |
아시아 태평양(홍콩) |
|
ap-south-2 |
아시아 태평양(하이데라바드) |
|
us-east-1 |
미국 동부(버지니아 북부) |
|
ap-northeast-2 |
아시아 태평양(서울) |
|
ap-northeast-3 |
아시아 태평양(오사카) |
|
eu-west-2 |
유럽(런던) |
|
ap-southeast-4 |
아시아 태평양(멜버른) |
|
ap-northeast-1 |
아시아 태평양(도쿄) |
|
us-west-2 |
미국 서부(오리건) |
|
us-west-1 |
미국 서부(캘리포니아 북부) |
|
ap-southeast-1 |
아시아 태평양(싱가포르) |
|
ap-southeast-2 |
아시아 태평양(시드니) |
|
il-central-1 |
이스라엘(텔아비브) |
|
ca-central-1 |
캐나다(중부) |
|
ca-west-1 |
캐나다 서부(캘거리) |
|
eu-south-2 |
유럽(스페인) |
|
cn-northwest-1 |
중국(닝샤) |
|
eu-central-2 |
유럽(취리히) |
| us-gov-east-1 | AWS GovCloud(미국 동부) |
| us-gov-west-1 | AWS GovCloud(미국 서부) |