Kinesis Data Streams で開いているシャードの数を変更する方法を教えてください。

所要時間2分
0

Amazon Kinesis Data Streams で開いているシャード数を変更したいと考えていますが、リシャーディング後に何をすればよいでしょうか。

簡単な説明

シャードは、OPEN、CLOSED、EXPIRED のいずれかの状態になります。シャードが OPEN 状態の場合、シャードからデータレコードを追加したり取得したりできます。

Kinesis Data Streams で開いているシャードの数を変更するには、次のいずれかを実行します。

  • 合計シャード数を更新します。この操作により、ストリーム内のシャード数が変更されます。
  • 1 つのシャードを分割します。
  • 2 つのシャードを 1 つのシャードにマージします。

注: Kinesis データストリームで開いているシャードの数を変更すると、その変更は親シャードとハッシュキー範囲の値に影響します。

解決策

合計シャード数を更新する

Kinesis コンソールまたは API オペレーションを使用して、開いているシャードの数を更新します。AWS マネジメントコンソールを使用する場合、Data Streams は UpdateShardCount API を使用してストリームをリシャーディングします。UpdateShardCount API に関する以下の点を確認してください。

  • この API はバックグラウンドで個々のシャードを分割またはマージして、指定されたストリームのシャード数を指定されたシャード数に更新します。UpdateShardCount は、ストリームレベルの API コールです。
  • UpdateShardCount は、均等スケーリングのみをサポートします。均等スケーリングでは、ハッシュキー範囲に対して同じ割合のシャードが作成されます。
  • UpdateShardCount オペレーションでは、シャードの数を同じサイズの特定の目標値に再調整できます。

1 つのシャードを分割する

1 つの「ホット」シャードまたは「コールド」シャードを 2 つに分割できます。

注: API オペレーションを通してのみ、シャードを分割またはマージできます。

予想よりも多くのデータを受け取るシャードは、「ホット」シャードと呼ばれます。SplitShard API を使用してホットシャードを選択的に分割すると、それらのシャードを対象とするハッシュキーの容量を増やすことができます。ホットシャードの管理の詳細については、「Strategies for resharding」を参照してください。

Amazon CloudWatch を使用して Amazon Kinesis Data Streams サービスをモニタリングすることもできます。CloudWatch メトリクスを使用して「ホット」シャードまたは「コールド」シャードを判断するには、IncomingRecordsIncomingBytes などのシャードレベルのメトリクスを有効にします。

2 つのシャードを 1 つにマージする

1 つの「ホット」シャードまたは「コールド」シャードを 2 つに分割できます。

注: API オペレーションを通してのみ、シャードを分割またはマージできます。

予想よりもかなり少ないデータを受け取るシャードは、「コールド」シャードと呼ばれます。MergeShards API を使用してコールドシャードをマージすると、その容量を最大限に活用できます。これはシャードレベルの API コールです。なお、マージできるのは隣接する 2 つのシャードのみで、それらのハッシュキー範囲を結合すると、ギャップなしの連続したセットが形成されます。

Amazon CloudWatch を使用して Amazon Kinesis Data Streams サービスをモニタリングすることもできます。CloudWatch メトリクスを使用して「ホット」シャードであるか「コールド」シャードであるかを判別するには、IncomingRecordsIncomingBytes などのシャードレベルのメトリクスを有効にします。

その他の考慮事項

リシャーディングの対象となるシャードまたはシャードのペアは、親シャードと呼ばれます。リシャーディングで作成されたシャードは子シャードと呼ばれます。ストリームの保持期間が経過すると、親シャードも OPEN 状態から CLOSED 状態に移行し、最終的には EXPIRED 状態になります。これにより、子シャードに OPEN 状態が割り当てられる可能性があります。親シャードの移行の詳細については、「リシャーディング後のデータのルーティング、データの永続化、シャードの状態」を参照してください。

リシャーディング後、CLOSED 状態のシャードがなくなるまで、CLOSED 状態のシャードからデータを読み取り続けます。これにより、コンシューマーアプリケーションが読み取るデータの順序を維持できます。CLOSED 状態のシャードがなくなったら、開いている子シャードからデータを読み取ります。Amazon Kinesis クライアントライブラリ (KCL) は、リシャーディング操作に対応するように設計されています。リシャーディングの前にシャードに存在していたデータが最初に処理されます。リシャーディング操作の詳細については、「Resharding, scaling, and parallel processing」を参照してください。

開いているシャードの数を変更すると、一部のシャードのハッシュキー範囲も変更される可能性があります。ハッシュキー範囲は、シャードに指定できるハッシュキー値の範囲であり、順序付けられた連続する正の整数のセットです。この範囲は開始キー値と終了キー値で構成されます。例えば、5 つの開いたシャードを含む Kinesis データストリームを作成すると、ストリームはハッシュキー範囲に基づいて等しく 5 分割されます。そのため、すべてのシャードのハッシュキースペース値は 20% になります。

例として、Shard-1 からShard-X までの X シャードのハッシュキー範囲があるとします。この範囲を変更するには、シャードをさらに分割またはマージします。

コンソールまたは UpdateShardCount API

開いているシャードの数を 5 から 10 に変更すると、子シャードのキースペースは 10% になります。ハッシュキーの範囲は、10% の値を使用して、開いているシャードすべてに均等に分割されます。

SplitShard API

最後のシャード (Shard-5) を 2 つのシャード (Shard- 6 と Shard-7) に分割します。シャードを分割する前は、親シャードのキースペースは 20% です。分割後、子シャード (Shard-6 と Shard-7) のキースペースは 10% になります。親シャードのハッシュキー範囲は、10% の値を使用して両方の子シャードに均等に分割されます。したがって、ハッシュキースペースは 20%-20% -20%-20% -10%-10% に分割されます。

MergeShards API

最後の 2 つのシャード (Shard-4 と Shard-5) を 1 つのシャード (Shard-6) にマージします。親シャード (Shard-4 と Shard-5) のハッシュキースペースは 20% です。マージすると、子シャード (Shard-6) のキースペースは 40% になります。親シャードのハッシュキー範囲が両方の子シャードに加算されて 40% になります。したがって、ハッシュキースペースは 20%-20%-20%-40% に分割されます。

AWS公式
AWS公式更新しました 5ヶ月前
コメントはありません