Comment modifier le nombre de partitions ouvertes dans Kinesis Data Streams ?

Dernière mise à jour : 05/06/2020

Je souhaite modifier le nombre de partitions ouvertes dans Amazon Kinesis Data Streams. Comment dois-je procéder et que dois-je faire après le repartitionnement ?

Brève description

Une partition peut être à l'état OPEN (ouverte), CLOSED (fermée) ou EXPIRED (expirée). Lorsqu'une partition est à l'état OPEN, vous pouvez ajouter et récupérer des enregistrements de données à partir de celle-ci.

Pour modifier le nombre de partitions ouvertes dans Kinesis Data Streams, effectuez l'une des actions suivantes :

  1. Mettez à jour le nombre total de partitions. Cela modifie le nombre de partitions dans le flux.
  2. Fractionnez une partition.
  3. Fusionnez deux partitions.

Remarque : si vous modifiez le nombre de partitions ouvertes dans votre flux de données Amazon Kinesis, tenez compte de son impact sur les partitions parentes et les valeurs de la plage de clés de hachage.

Résolution

Mettre à jour le nombre total de partitions

Vous pouvez modifier le nombre de partitions ouvertes à l'aide de la console Kinesis ou d'opérations d'API. Lorsque vous utilisez AWS Management Console, Data Streams regroupe votre flux à l'aide de l'API UpdateShardCount.

  • Cette opération d'API met à jour le nombre de partitions du flux spécifié par rapport au nombre de partitions indiqué (en fractionnant ou en fusionnant les partitions individuelles en arrière-plan). Il s'agit d'un appel d'API au niveau du flux.
  • Cette fonction prend uniquement en charge la mise à l'échelle uniforme, ce qui crée des partitions de pourcentage égal pour la plage de clés de hachage.
  • L'opération UpdateShardCount réajuste le nombre de partitions en fonction d'une valeur cible spécifique de tailles égales.

Fractionner une partition

Envisagez de fractionner une partition en deux si vous rencontrez une partition « chaude » ou « froide ».

Remarque : vous pouvez uniquement fractionner ou fusionner des partitions via des opérations d'API.

Les partitions qui reçoivent plus de données que prévu sont des partitions « chaudes ». Vous pouvez les fractionner de façon sélective à l'aide de l'API SplitShard, afin d'augmenter la capacité des clés de hachage qui ciblent ces partitions. Pour plus d'informations sur les partitions chaudes, consultez la section Stratégies de repartitionnement.

Vous pouvez aussi surveiller le service Amazon Kinesis Data Streams à l'aide d'Amazon CloudWatch. Utilisez les métriques CloudWatch pour déterminer quelles sont les partitions « chaudes » ou « froides » en activant les métriques au niveau des partitions, comme IncomingRecords et IncomingBytes.

Fusionner deux partitions

Envisagez de fusionner deux partitions si vous rencontrez une partition « chaude » ou « froide ».

Remarque : vous pouvez uniquement fractionner ou fusionner des partitions via des opérations d'API.

Les partitions qui reçoivent beaucoup moins de données que prévu sont des partitions « froides ». Vous pouvez fusionner des partitions froides en utilisant l'API MergeShards, afin d'utiliser leur pleine capacité. Il s'agit d'un appel d'API au niveau de la partition. Notez que vous pouvez uniquement fusionner deux partitions adjacentes, où l'union de leurs plages de clés de hachage forme un ensemble contigu, sans écart.

Vous pouvez aussi surveiller le service Amazon Kinesis Data Streams à l'aide d'Amazon CloudWatch. Utilisez les métriques CloudWatch pour déterminer quelles sont les partitions « chaudes » ou « froides » en activant les métriques au niveau des partitions, comme IncomingRecords et IncomingBytes.

Autres considérations

On appelle partition parente la partition ou la paire de partitions sur laquelle porte l'opération de repartitionnement. Les partitions créées après l'opération de repartitionnement sont des partitions enfants. Une partition parente passe également d'un état OPEN à un état CLOSED (et, enfin, à un état EXPIRED, après la période de conservation du flux). Cela peut entraîner l'attribution d'un état OPEN aux partitions enfants. Pour plus d'informations sur les transitions de partitions parentes, consultez Routage des données, persistance des données et état des partitions après un repartitionnement.

Après le repartitionnement, vous devez également continuer à lire les données des partitions CLOSED jusqu'à ce qu'elles soient épuisées. Cela permet de conserver l'ordre des données lues par les consommateurs. Une fois que vous avez épuisé toutes les partitions CLOSED, vous pouvez commencer à lire les données des partitions enfants ouvertes. L'Amazon Kinesis Client Library (KCL) est conçue pour s'adapter aux opérations de repartitionnement. Toutes les données qui existaient dans les partitions avant le repartitionnement sont traitées en premier. Pour plus d'informations sur les opérations de repartitionnement, consultez la section Repartitionnement, mise à l'échelle et traitement parallèle.

Si vous modifiez le nombre de partitions ouvertes, cela peut également entraîner la modification des plages de clés de hachage pour certaines partitions (ou bien toutes). Une plage de clés de hachage correspond à la plage de valeurs de clés de hachage possibles pour une partition. Il s'agit d'un ensemble d'entiers positifs contigus ordonnés. La plage se compose de valeurs de clé de début et de fin. Par exemple, si vous créez un flux de données Kinesis avec cinq partitions ouvertes, la plage de clés de hachage est divisée également en plages de 20 %. Par conséquent, toutes les partitions ont une valeur d'espace de clés de hachage de 20 %.

Si vous effectuez des opérations de repartitionnement sur le flux de données Kinesis, la plage de clés de hachage est répartie entre les partitions enfants comme suit :

  • Utilisation de la console ou de l'API UpdateShardCount : si vous modifiez le nombre de partitions ouvertes de 5 à 10, les partitions enfants obtenues disposeront alors d'un espace de clés de hachage de 10 %. La plage de clés de hachage est divisée de manière égale pour toutes les partitions ouvertes avec une valeur de 10 %.
  • Utilisation de l'API SplitShard : divisez la dernière partition (Shard-5) en deux (Shard-6 et Shard-7). Avant le fractionnement, la partition parente (Shard-5) avait un espace de clé de hachage de 20 %. Après le fractionnement, les partitions enfants résultantes (Shard-6 et Shard-7) ont désormais un espace de clé de hachage de 10 %. La plage de clés de hachage des partitions parentes est divisée également en deux partitions enfants avec une valeur de 10 %. Par conséquent, l'espace de clés de hachage est réparti comme suit : 20 %-20 %-20 %-20 %-10 %-10 %. 
  • Utilisation de l'API MergeShards : fusionnez les deux dernières partitions (Shard-4 et Shard-5) en une seule partition (Shard-6). Les partitions parentes (Shard-4 et Shard-5) ont un espace de clé de hachage de 20 %. Après la fusion, la partition enfant résultante (Shard-6) a désormais un espace de clés de hachage de 40 %. La plage de clés de hachage des partitions parentes est ajoutée aux deux partitions enfants pour atteindre 40 %. Par conséquent, l'espace de clé de hachage est réparti comme suit : 20 %-20 %-20 %-40 %.

Cet article vous a-t-il été utile ?

Cette page peut-elle être améliorée ?


Vous avez besoin d'aide ?