Kinesis Data Streams에서 열린 샤드 수를 변경하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 6월 5일

Amazon Kinesis Data Streams에서 열린 샤드 수를 변경하려고 합니다. 리샤딩 후 어떻게 해야 합니까?

간략한 설명

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

Kinesis Data Streams에서 열린 샤드 수를 변경하려면 다음 중 하나를 수행합니다.

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

참고: Amazon Kinesis 데이터 스트림에서 열린 샤드 수를 변경하는 경우 상위 샤드 및 해시 키 범위 값에 미치는 영향을 고려하십시오.

해결 방법

총 샤드 수 업데이트

Kinesis 콘솔을 사용하거나 API 작업을 통해 열린 샤드 수를 업데이트할 수 있습니다. AWS Management Console을 사용하는 경우 Data Streams가 UpdateShardCount API를 사용하여 스트림을 리샤딩합니다.

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

단일 샤드 분할

"핫" 또는 "콜드" 샤드가 발생할 경우 샤드를 2개의 샤드로 분할하는 것이 좋습니다.

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

예상보다 많은 데이터를 수신하는 샤드를 "핫" 샤드라고 합니다. SplitShard API를 사용하여 핫 샤드를 선택적으로 분할하여 해당 샤드를 대상으로 하는 해시 키의 용량을 늘릴 수 있습니다. 핫 샤드에 대한 자세한 내용은 리샤딩 전략을 참조하십시오.

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

샤드 2개를 하나로 병합

"핫" 또는 "콜드" 샤드가 발생할 경우 2개의 샤드를 하나로 병합하는 것이 좋습니다.

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

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

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

추가 고려 사항

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

또한 리샤딩 후에는 소진될 때까지 CLOSED 샤드에서 데이터를 계속 읽어야 합니다. 이렇게 하면 소비자 애플리케이션이 읽는 데이터의 순서를 보존할 수 있습니다. 모든 CLOSED 샤드를 소진하면 열린 하위 샤드에서 데이터를 읽을 수 있습니다. Amazon Kinesis 클라이언트 라이브러리(KCL)는 리샤딩 작업에 맞게 설계되었습니다. 리샤딩 전에 샤드에 있었던 모든 데이터가 먼저 처리됩니다. 리샤딩 작업에 대한 자세한 내용은 리샤딩, 크기 조정 및 병렬 처리를 참조하십시오.

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

Kinesis 데이터 스트림에서 리샤딩 작업을 수행하면 해시 키 범위가 다음과 같이 하위 샤드 간에 분할됩니다.

  • 콘솔 또는 UpdateShardCount API 사용: 열린 샤드 수를 5에서 10으로 변경하면 결과 하위 샤드의 해시 키스페이스가 10%가 됩니다. 해시 키 범위는 값이 10%인 모든 열린 샤드로 균등하게 분할됩니다.
  • SplitShard API 사용: 마지막 샤드(샤드-5)를 샤드 2개(샤드-6 및 샤드-7)로 분할합니다. 샤드를 분할하기 전에는 상위 샤드(샤드-5)의 해시 키스페이스가 20%였지만, 분할 후 결과 하위 샤드(샤드-6 및 샤드-7)의 해시 키스페이스는 10%입니다. 상위 샤드의 해시 키 범위는 값이 10%인 두 하위 샤드로 균등하게 분할됩니다. 따라서 해시 키스페이스는 20%-20%-20%-20%-10%-10%로 분할됩니다. 
  • MergeShards API 사용: 마지막 2개의 샤드(샤드-4 및 샤드-5)를 하나의 샤드(샤드-6)로 병합합니다. 상위 샤드(샤드-4 및 샤드-5)의 해시 키스페이스는 20%였지만, 병합 후 결과 하위 샤드(샤드-6)의 해시 키스페이스는 40%입니다. 상위 샤드의 해시 키 범위가 두 하위 샤드에 모두 추가되어 40%가 됩니다. 따라서 해시 키스페이스는 20%-20%-20%-40%로 분할됩니다.

이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?