Kinesis Data Streams의 공개 샤드 수를 변경하려면 어떻게 해야 하나요?

4분 분량
0

Amazon Kinesis Data Streams에서 열린 샤드의 수를 변경하고 싶고, 리샤딩한 후 무엇을 해야 하는지 알고 싶습니다.

간략한 설명

샤드는 OPEN, CLOSED 또는 EXPIRED 상태일 수 있습니다. 샤드가 OPEN 상태인 경우 샤드에서 데이터 레코드를 추가하고 검색할 수 있습니다.

Kinesis Data Streams에서 열린 샤드 수를 변경하려면 다음 작업 중 하나를 완료하세요.

  • 총 샤드 수를 업데이트합니다. 이렇게 하면 해당 스트림의 샤드 수가 변경됩니다.
  • 단일 샤드를 분할합니다.
  • 샤드 두 개를 하나의 샤드로 병합합니다.

참고: Kinesis 데이터 스트림에서 열린 샤드 수를 변경하면 상위 샤드 및 해시 키 범위 값에 영향을 줍니다.

해결 방법

총 샤드 수 업데이트

Kinesis 콘솔 또는 API 작업을 사용하여 열린 샤드의 수를 업데이트하세요. AWS Management Console을 사용하는 경우 Data Streams가 UpdateShardCount API를 사용하여 스트림을 리샤딩합니다. UpdateShardCount API에 대한 다음 사항을 검토하세요.

  • 이 API는 백그라운드에서 개별 샤드를 분할하거나 병합하여 지정된 스트림의 샤드 수를 지정된 샤드 수로 업데이트합니다. UpdateShardCount는 스트림 수준 API 직접 호출입니다.
  • UpdateShardCount는 균일한 크기 조정만 지원합니다. 균일한 크기 조정은 해시 키 범위에 대해 동일한 비율의 샤드를 생성합니다.
  • UpdateShardCount 작업은 샤드 수를 동일한 크기의 특정 대상 값으로 다시 조정합니다.

단일 샤드 분할

“핫” 샤드 또는 “콜드” 샤드를 두 개의 샤드로 분할할 수 있습니다.

참고: 샤드는 API 작업을 통해서만 분할하거나 병합할 수 있습니다.

예상보다 많은 데이터를 수신하는 샤드를 “핫” 샤드라고 합니다. SplitShard API를 사용하여 핫 샤드를 선택적으로 분할하여 해당 샤드를 대상으로 하는 해시 키의 용량을 늘릴 수 있습니다. 핫 샤드 관리에 대한 자세한 내용은 ](https://docs.aws.amazon.com/streams/latest/dev/kinesis-using-sdk-java-resharding-strategies.html)리샤딩 전략[을 참조하세요.

Amazon CloudWatch를 사용하여 Amazon Kinesis Data Streams 서비스를 모니터링할 수도 있습니다. CloudWatch 지표를 사용하면 IncomingRecordsIncomingBytes와 같은 샤드 수준 지표를 활성화하여 "핫" 또는 "콜드" 샤드를 확인할 수 있습니다.

샤드 두 개를 하나로 병합

“핫” 샤드 또는 “콜드” 샤드를 두 개의 샤드로 분할할 수 있습니다.

참고: 샤드는 API 작업을 통해서만 분할하거나 병합할 수 있습니다.

예상보다 훨씬 적은 데이터를 수신하는 샤드를 “콜드” 샤드라고 합니다. MergeShards API를 사용하여 콜드 샤드를 병합하여 해당 샤드의 전체 용량을 사용할 수 있습니다. 이는 샤드 수준 API 직접 호출입니다. 인접한 샤드 2개만 병합할 수 있습니다. 즉, 해시 키 범위의 합집합이 간격 없이 연속적인 집합을 형성해야 합니다.

Amazon CloudWatch를 사용하여 Amazon Kinesis Data Streams 서비스를 모니터링할 수도 있습니다. IncomingRecordsIncomingBytes와 같은 샤드 수준 지표를 활성화하여 "핫" 또는 "콜드" 샤드를 확인하기 위해 CloudWatch 지표를 사용하세요.

추가 고려 사항

리샤딩 작업이 수행되는 샤드 또는 샤드 쌍을 상위 샤드라고 합니다. 리샤딩 작업 결과 생성되는 샤드를 하위 샤드라고 합니다. 또한 상위 샤드는 OPEN 상태에서 CLOSED 상태로 전환되고 스트림의 보존 기간이 지나면 EXPIRED 상태로 전환됩니다. 이로 인해 하위 샤드에 OPEN 상태가 할당될 수 있습니다. 상위 샤드 전환에 대한 자세한 내용은 리샤딩 이후 데이터 라우팅, 데이터 지속성, 샤드 상태를 참조하세요.

리샤딩 후에는 CLOSED 샤드가 모두 소진될 때까지 CLOSED 샤드에서 데이터를 계속 읽어야 합니다. 이는 소비자 애플리케이션에서 읽는 데이터의 순서를 보존하는 데 도움이 됩니다. CLOSED 샤드를 모두 소진하면 열린 하위 샤드에서 데이터를 읽습니다. Amazon Kinesis Client Library(KCL)는 리샤딩 작업에 맞게 설계되었습니다. 리샤딩 전에 샤드에 있었던 데이터가 먼저 처리됩니다. 리샤딩 작업에 대한 자세한 내용은 리샤딩, 크기 조정 및 병렬 처리를 참조하세요.

열린 샤드의 수를 변경하면 일부 샤드의 해시 키 범위도 변경될 수 있습니다. 해시 키 범위는 샤드의 가능한 해시 키 값의 범위로, 순서가 지정된 연속적인 양의 정수의 집합입니다. 범위는 시작 및 종료 키 값으로 구성됩니다. 예를 들어 다섯 개의 열린 샤드가 있는 Kinesis 데이터 스트림을 생성하면 해시 키 범위가 5개의 균등한 범위로 분할됩니다. 따라서 모든 샤드의 해시 키스페이스 값이 20%가 됩니다.

예를 들어 샤드-1부터 샤드-X까지 X개 샤드의 해시 키 범위가 있다고 가정해 보겠습니다. 샤드를 추가로 분할하거나 병합하여 범위를 수정할 수 있습니다.

Console or UpdateShardCount API

열린 샤드 수를 5에서 10으로 변경하면 그 결과 하위 샤드의 키스페이스는 10%가 됩니다. 해시 키 범위는 값이 10%인 모두 열린 샤드로 균등하게 나누어집니다.

SplitShard API

마지막 샤드(샤드-5)를 두 개의 샤드(샤드-6 및 샤드-7)로 분할합니다. 샤드를 분할하기 전 상위 샤드의 키스페이스는 20% 입니다. 샤드를 분할한 후 하위 샤드(샤드-6 및 샤드-7)의 키스페이스는 10% 입니다. 상위 샤드의 해시 키 범위는 값이 10%인 두 하위 샤드로 균등하게 분할됩니다. 따라서 해시 키스페이스는 20%-20%-20%-20%-10%-10%로 분할됩니다.

MergeShards API

마지막 두 샤드(샤드-4와 샤드-5)를 하나의 샤드(샤드-6)로 병합합니다. 상위 샤드(샤드-4 및 샤드-5)의 해시 키스페이스는 20%입니다. 샤드를 병합한 후 하위 샤드(샤드-6) 의 키스페이스는 40%입니다. 상위 샤드의 해시 키 범위가 두 하위 샤드에 모두 추가되어 40%가 됩니다. 따라서 해시 키스페이스는 20%-20%-20%-40%로 분할됩니다.

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