View a markdown version of this page

대형 레코드 처리 - Amazon Kinesis Data Streams

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

대형 레코드 처리

Amazon Kinesis Data Streams는 최대 10메비바이트(MiB)의 레코드를 지원합니다. 이 기능은 기본 1MiB 레코드 크기 제한을 초과하는 간헐적인 데이터 페이로드 처리 작업에 권장됩니다. 기존 스트림과 새로 생성된 스트림의 기본 최대 레코드 크기는 1MiB로 설정됩니다.

이 기능은 사물 인터넷(IoT) 애플리케이션, 변경 데이터 캡처(CDC) 파이프라인, 가끔 더 큰 데이터 페이로드를 처리해야 하는 기계 학습 워크플로에 유용합니다. 스트림에서 대형 레코드 사용을 시작하려면 스트림의 최대 레코드 크기 제한을 업데이트합니다.

중요

쓰기의 경우 1MB/s, 읽기의 경우 2MB/s의 개별 샤드 처리량 제한은 더 큰 레코드 크기를 지원하더라도 변경되지 않습니다. Kinesis Data Streams는 1MiB 이하 레코드의 기준 트래픽과 함께 간헐적으로 대형 레코드를 수용하도록 설계되었습니다. 지속적으로 대량의 대형 레코드 수집을 수용하도록 설계되지 않았습니다.

대용량 레코드의 작동 방식

Amazon Kinesis Data Streams는 최대 10MiB 크기의 레코드를 허용합니다. 스트림은 지속적인 쓰기 처리량을 초과하여 일시적으로 버스트한 다음 시간 경과에 따라 기준 속도로 돌아가 대규모 레코드를 수용합니다. 이 버스트 용량은 지속적으로 보충되므로 스트림은 수동 용량 조정 없이 정상 트래픽과 함께 간헐적으로 큰 레코드를 처리할 수 있습니다.

이 동작을 시각화하려면 스트림의 쓰기 용량을 일정한 속도로 리필되는 탱크로 생각하십시오. 10MiB 레코드와 같은 큰 레코드를 보내면 탱크가 일시적으로 고갈됩니다. 그런 다음 즉시 다시 채우기를 시작합니다. 즉, 용량이 사용 가능해지면 더 작은 레코드를 계속 전송할 수 있습니다.

용량이 보충되는 속도는 다음과 같은 여러 요인에 따라 달라집니다.

  • 큰 레코드의 크기

  • 기준 레코드의 크기

  • 스트림의 전체 트래픽 패턴

  • 선택한 파티션 키 전략

최상의 결과를 얻으려면 균일하게 분산된 파티션 키를 사용하여 스트림의 가용 용량에 큰 레코드를 분산합니다.

온디맨드 모드에서 Kinesis Data Streams는 용량을 자동으로 관리합니다. 스트림은 트래픽 패턴에 따라 처리량을 확장 및 축소하며, 대규모 레코드 버스트 용량은 투명하게 처리됩니다. 대용량 레코드를 사용하기 위해 용량을 프로비저닝하거나 관리할 필요가 없습니다. 온디맨드 모드 확장 방법에 대한 자세한 내용은 온디맨드 모드 기능 및 사용 사례를 참조하세요.

대형 레코드를 사용하도록 스트림 업데이트

Kinesis Data Streams로 대용량 레코드를 처리하려면
  1. Kinesis Data Streams 콘솔로 이동합니다.

  2. 스트림을 선택하고 구성 탭으로 이동합니다.

  3. 최대 레코드 크기 옆에 있는 편집을 클릭합니다.

  4. 최대 레코드 크기(최대 10MiB)를 설정합니다.

  5. 변경 내용을 저장합니다.

이 설정은 이 Kinesis Data Streams의 최대 레코드 크기만 조정합니다. 이 제한을 늘리기 전에 모든 다운스트림 애플리케이션이 더 큰 레코드를 처리할 수 있는지 확인합니다.

AWS CLI를 사용하여이 설정을 업데이트할 수도 있습니다.

aws kinesis update-max-record-size \ --stream-arn \ --max-record-size-in-ki-b 5000

대형 레코드로 스트림 성능 최적화

대용량 레코드는 간헐적으로 사용하도록 설계되었습니다. 최상의 결과를 얻으려면 전체 트래픽의 2% 미만으로 큰 레코드를 유지합니다. 스트림이 지속적인 처리량을 초과하여 일시적으로 버스트되어 큰 레코드를 전송하기 때문에 큰 레코드를 너무 자주 전송하면 기준 트래픽에 사용할 수 있는 용량이 줄어들 수 있습니다. 대규모 레코드로 스트림 성능을 최적화하는 방법에 대한 자세한 내용은 조절 및 최적의 성능을 위한 모범 사례를 참조하세요.

대형 레코드로 스로틀링 완화

대용량 레코드는 일시적으로 버스트 용량을 소비하므로 용량이 보충될 때까지 스트림이 후속 쓰기를 제한할 수 있습니다. 다음 단계는 제한을 줄이는 데 도움이 됩니다.

스로틀링을 완화하려면
  1. 생산자 애플리케이션에서 지수 백오프를 사용하여 재시도 로직을 구현합니다.

  2. 무작위 파티션 키를 사용하여 스트림의 가용 용량에 대용량 레코드를 분산합니다.

  3. 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부터 대형 레코드 처리를 지원합니다. 대형 레코드 지원을 사용하려면 스트림의 maxRecordSize를 업데이트하고 KCL을 사용합니다. 자세한 내용은 Use Kinesis Client Library 섹션을 참조하세요.

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)까지의 대형 레코드 처리를 지원합니다. 대형 레코드 지원을 사용하려면 readStream 함수를 사용합니다. 자세한 내용은 Amazon EMR and Amazon Kinesis integration 섹션을 참조하십시오.

Amazon Data Firehose

Kinesis Data Streams와 함께 사용할 경우 Amazon Data Firehose의 대형 레코드 처리 동작은 전송 대상에 따라 달라집니다.

  • Amazon S3: 추가 구성 없이 대형 레코드 전송이 지원됩니다. data format conversion을 사용하면 Firehose에서 대형 레코드 전송이 지원됩니다. dynamic partitioning을 사용하는 경우 Firehose에서는 대형 레코드 전송이 지원되지 않습니다.

  • Lambda: Lambda 함수를 다운스트림으로 트리거할 때 Firehose와 함께 대형 레코드를 사용하지 않는 것이 좋습니다. 간헐적인 장애가 발생할 수 있습니다.

  • HTTP: Firehose에서는 대형 레코드 전송이 지원되지 않습니다.

  • Snowflake: Firehose에서는 대형 레코드 전송이 지원되지 않습니다.

  • Amazon Redshift: 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 미만의 레코드 크기만 지원합니다. 이 한도를 초과하는 레코드는 처리되지 않습니다. 처리되지 않은 레코드는 sys_stream_scan_errors로 기록됩니다. 자세한 내용은 SYS_STREAM_SCAN_ERRORS 섹션을 참조하세요.

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(미국 서부)