Wie ändere ich die Anzahl der offenen Shards in Kinesis Data Streams?

Lesedauer: 5 Minute
0

Ich möchte die Anzahl der offenen Shards in Amazon Kinesis Data Streams ändern und wissen, was nach dem Resharding zu tun ist.

Kurzbeschreibung

Ein Shard kann den Status OFFEN, GESCHLOSSEN oder ABGELAUFEN haben. Wenn sich ein Shard im Status OFFEN befindet, können Sie Datensätze zum Shard hinzufügen und daraus abrufen.

Um die Anzahl der offenen Shards in Kinesis Data Streams zu ändern, führen Sie eine der folgenden Aufgaben aus:

  • Aktualisieren Sie die Gesamtzahl der Shards. Durch diese Aktion wird die Anzahl der Shards im Stream geändert.
  • Teilen Sie einen einzelnen Shard auf.
  • Fügen Sie zwei Shards zu einem Shard zusammen.

**Anmerkung:**Wenn Sie die Anzahl der offenen Shards in Ihrem Kinesis-Datenstream ändern, wirkt sich diese Änderung auf die übergeordneten Shards und die Hash-Schlüsselbereichswerte aus.

Lösung

Aktualisieren der Gesamtzahl der Shards

Verwenden Sie die Kinesis-Konsole oder API-Operationen, um die Anzahl der geöffneten Shards zu aktualisieren. Wenn Sie die AWS-Managementkonsole verwenden, verwendet Data Streams die UpdateShardCount-API, um Ihre Datenströme erneut zu teilen. Lesen Sie die folgenden Punkte zur UpdateShardCount-API:

  • Die API teilt oder führt einzelne Shards im Hintergrund zusammen, um die Shard-Anzahl des angegebenen Streams auf die angegebene Anzahl von Shards zu aktualisieren. UpdateShardCount ist ein API-Aufruf auf Datenstromebene.
  • UpdateShardCount unterstützt nur eine einheitliche Skalierung. Durch eine einheitliche Skalierung werden Shards mit gleichem Prozentsatz für den Hash-Schlüsselbereich erzeugt.
  • Die Operation UpdateShardCount passt die Anzahl der Shards an einen bestimmten Zielwert an, der gleich groß ist.

Aufteilen eines einzelnen Shards

Du kannst einen „heißen“ oder „kalten“ Shard in zwei Shards aufteilen

**Anmerkung:**Sie können Shards nur über API-Operationen teilen oder zusammenführen.

Shards, die mehr Daten als erwartet empfangen, werden als „heiße“ Shards bezeichnet. Verwenden Sie die SplitShard-API, um die heißen Shards selektiv aufzuteilen, damit die Kapazität für die Hash-Schlüssel erhöht wird, die auf diese Shards abzielen. Weitere Informationen zur Verwaltung von heißen Shards finden Sie unter Strategien für das Resharding.

Sie können den Amazon Kinesis Data Streams Service auch mit Amazon CloudWatch überwachen. Um mithilfe von CloudWatch-Metriken „heiße“ oder „kalte“ Shards zu ermitteln, aktivieren Sie Metriken auf Shard-Ebene wie IncomingRecords und IncomingBytes.

Zusammenfügen zweier Shards zu einem Shard

Sie können einen „heißen“ oder „kalten“ Shard in zwei Shards aufteilen.

**Anmerkung:**Sie können Shards nur über API-Operationen teilen oder zusammenführen.

Shards, die viel weniger Daten als erwartet empfangen, werden als „kalte“ Shards bezeichnet. Verwenden Sie die MergeShards-API, um kalte Shards zusammenzuführen, um ihre volle Kapazität zu nutzen. Dies ist ein API-Aufruf auf Shard-Ebene. Beachten Sie, dass Sie nur zwei benachbarte Shards zusammenführen können, wobei die Vereinigung ihrer Hash-Schlüsselbereiche einen zusammenhängenden Satz ohne Lücken bildet.

Sie können den Amazon Kinesis Data Streams Service auch mit Amazon CloudWatch überwachen. Verwenden Sie CloudWatch-Metriken, um „heiße“ oder „kalte“ Shards zu ermitteln, indem Sie Metriken auf Shard-Ebene wie IncomingRecords und IncomingBytes aktivieren.

Zusätzliche Erwägungen

Der Shard oder das Shard-Paar, auf das die Reshard-Operation einwirkt, wird als übergeordnete Shards bezeichnet. Die Shards, die nach dem Reshard-Vorgang erstellt werden, werden als untergeordnete Shards bezeichnet. Ein übergeordneter Shard geht auch zudem vom Status OFFEN in den Status GESCHLOSSEN und schließlich nach Ablauf der Aufbewahrungszeit des Streams in den Status ABGELAUFEN über. Dies kann dazu führen, dass untergeordneten Shards der Status OFFEN zugewiesen wird. Weitere Informationen zu den übergeordneten Shard-Übergängen finden Sie unter Datenrouting, Datenpersistenz und Shard-Status nach einem Reshard.

Lesen Sie nach dem Reshard weiterhin Daten aus den GESCHLOSSENEN Shards, bis die GESCHLOSSENEN Shards erschöpft sind. Dies hilft, die Reihenfolge der von den Verbraucheranwendungen gelesenen Daten beizubehalten. Nachdem Sie alle GESCHLOSSENEN Shards aufgebraucht haben, lesen Sie Daten aus offenen untergeordneten Shards. Die Amazon Kinesis client library (KCL) ist so konzipiert, dass sie sich an Resharding-Operationen anpasst. Daten, die vor dem Reshard in den Shards vorhanden waren, werden zuerst verarbeitet. Weitere Informationen zu Resharding-Vorgängen finden Sie unter Resharding, Skalierung und Parallelverarbeitung.

Wenn Sie die Anzahl der offenen Shards ändern, können sich auch Änderungen an den Hash-Schlüsselbereichen für einige Shards ergeben. Ein Hash-Schlüsselbereich ist der Bereich möglicher Hash-Schlüsselwerte für einen Shard, eine Menge geordneter zusammenhängender positiver Ganzzahlen. Der Bereich besteht aus Start- und Endschlüsselwerten. Wenn Sie beispielsweise einen Kinesis-Datenstrom mit fünf offenen Shards erstellen, wird der Stream basierend auf dem Hash-Schlüsselbereich in fünf gleiche Teile aufgeteilt. Daher haben alle Shards 20% als Hash-Schlüsselbereichwert.

Nehmen wir als Beispiel an, Sie haben einen Hash-Schlüsselbereich von X Shards, von Shard-1 bis Shard-X. Sie können die Bereiche ändern, indem Sie die Shards weiter aufteilen oder die Shards zusammenführen:

Konsole oder UpdateShardCount-API

Wenn Sie die Anzahl der offenen Shards von 5 auf 10 ändern, beträgt der resultierende Schlüsselbereich der untergeordneten Shards 10%. Der Hash-Schlüsselbereich ist gleichmäßig in alle offenen Shards mit einem Wert von 10% aufgeteilt.

SplitShard-API

Teilen Sie den letzten Shard (Shard-5) in zwei Shards (Shard-6 und Shard-7) auf. Bevor Sie einen Shard aufteilen, beträgt der Schlüsselbereich des übergeordneten Shards 20%. Nachdem Sie einen Shard aufgeteilt haben, beträgt der Schlüsselbereich der untergeordneten Shards (Shard-6 und Shard-7) 10%. Der Hash-Schlüsselbereich für die übergeordneten Shards ist gleichmäßig auf beide untergeordneten Shards mit einem Wert von 10% aufgeteilt. Daher wird der Hash-Schlüsselbereich um 20%-20% -20%-20% -10%-10% aufgeteilt.

MergeShards-API

Fügen Sie die letzten beiden Shards (Shard-4 und Shard-5) zu einem Shard (Shard-6) zusammen. Der Hash-Schlüsselbereich der übergeordneten Shards (Shard-4 und Shard-5) beträgt 20%. Nachdem Sie einen Shard zusammengeführt haben, beträgt der Schlüsselbereich des untergeordneten Shards (Shard-6) 40%. Der Hash-Schlüsselbereich der übergeordneten Shards wird zu beiden untergeordneten Shards hinzugefügt, sodass er 40% entspricht. Daher wird der Hash-Schlüsselbereich zu 20%-20% -20%-40% aufgeteilt.

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 5 Monaten