Pourquoi la vérification des points de contrôle de mon application Amazon Kinesis Data Analytics échoue-t-elle ?

Dernière mise à jour : 25/02/2022

La vérification des points de contrôle ou des points de sauvegarde de mon application Amazon Kinesis Data Analytics échoue.

Brève description

La vérification des point de contrôle est la méthode utilisée pour implémenter la tolérance aux pannes dans Amazon Kinesis Data Analytics pour Apache Flink. Une application qui n'est pas optimisée ou qui n'est pas correctement provisionnée peut entraîner l'échec de la vérification des point de contrôle.

Les principales causes d'échec de la vérification des points de contrôle sont les suivantes :

  • Pour RocksDB, Apache Flink lit les fichiers enregistrés sur le stockage local et écrit sur le stockage permanent distant, Amazon Simple Storage Service (Amazon S3). Les performances du disque local et le taux de chargement peuvent avoir un impact sur la vérification des points de contrôle et entraîner son échec.
  • Les états des points de sauvegarde et des points de contrôle sont stockés dans un compartiment Amazon S3 détenu par un service et entièrement géré par AWS. Ces états sont utilisés lors du basculement d'une application. Des erreurs de serveur ou une latence temporaires dans ce compartiment S3 peuvent entraîner l'échec de la vérification des points de contrôle.
  • Une fonction de processus que vous avez créée et qui communique avec une ressource externe, telle qu'Amazon DynamoDB, pendant la vérification des points de contrôle peut entraîner l'échec de cette dernière.
  • Un échec dû à la sérialisation de l'état, telle qu'une incompatibilité du sérialiseur avec les données entrantes, peut entraîner l'échec de la vérification des points de contrôle.
  • Le nombre d'unités de traitement Kinesis (KPU) allouées pour l'application peut ne pas être suffisant. Pour trouver les KPU allouées, utilisez le calcul suivant :
    KPU allouées pour l'application = Parallélism/ParallelismPerKPU
  • Des tailles d'état d'application plus importantes peuvent entraîner une augmentation de la latence de la vérification des points de contrôle. En effet, le gestionnaire de tâches prend plus de temps pour enregistrer le point de contrôle, ce qui peut entraîner une exception de mémoire insuffisante.
  • Une distribution asymétrique des états peut avoir pour conséquence qu'un gestionnaire des tâches traite plus de données que les autres gestionnaires des tâches. Même si suffisamment de KPU (ressources) sont allouées, un ou plusieurs gestionnaires des tâches surchargés peuvent provoquer une exception de mémoire insuffisante.
  • Une cardinalité élevée indique qu'il existe un grand nombre de clés uniques dans les données entrantes. Si la tâche utilise l'opérateur KeyBy pour partitionner les données entrantes et si la clé sur laquelle les données sont partitionnées présente une cardinalité élevée, la vérification des points de contrôle peut prendre plus de temps et peut même échouer dans certains cas.

Résolution

  • La taille de l'état de votre application peut augmenter rapidement, entraînant une augmentation de la taille des points de contrôle et de la durée de la vérification. Vous pouvez surveiller ces valeurs à l'aide des métriques Amazon CloudWatch lastCheckPointDuration et lastCheckpointSize. Pour plus d'informations, consultez la section Métriques d'application.
  • Augmentez le parallélisme de l'opérateur qui traite davantage de données. Vous pouvez définir le parallélisme d'un opérateur, d'une source de données ou d'un récepteur de données en appelant la méthode setParallelism().
  • Ajustez les valeurs des paramètres Parallelism et ParallelismPerKPU pour une utilisation optimale des KPU. Assurez-vous que la scalabilité automatique n'est pas désactivée pour votre application Amazon Kinesis Data Analytics. La valeur du paramètre maxParallelism vous permet de mettre à l'échelle selon le nombre de KPU souhaité. Pour plus d'informations, consultez la section Mise à l'échelle d'applications dans Kinesis Data Analytics pour Apache Flink.
  • Définissez la valeur TTL (durée de vie) sur l'état pour vous assurer que l'état est nettoyé périodiquement.
  • Optimisez le code pour permettre une meilleure stratégie de partitionnement. Vous pouvez utiliser le partitionnement de rééquilibrage pour distribuer les données de manière uniforme. Cette méthode utilise une méthode de tourniquet pour la distribution.
  • Optimisez le code pour réduire la taille d'une fenêtre afin de réduire la cardinalité du nombre de clés dans cette fenêtre.

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


Besoin d'aide pour une question technique ou de facturation ?