Le point de contrôle ou le point de sauvegarde de mon application Amazon Managed Service pour Apache Flink ne cesse d'échouer.
Brève description
Le point de contrôle est la méthode utilisée pour implémenter la tolérance aux pannes dans Amazon Managed Service pour Apache Flink. Si vous n'optimisez pas ou ne provisionnez pas correctement votre application, vous pouvez rencontrer des échecs de point de contrôle.
Les principales causes d’échecs de point de contrôle sont les suivantes :
- Pour la base de données Rocks, Apache Flink lit les fichiers depuis le stockage local et écrit sur le stockage persistant distant Amazon Simple Storage Service (Amazon S3). Les performances du disque local et le taux de chargement peuvent affecter le point de contrôle et entraîner des échecs de point de contrôle.
- Les états des points de sauvegarde et de contrôle sont stockés dans un compartiment Amazon S3 appartenant au service et entièrement géré par AWS. Ces états sont accessibles chaque fois qu'une application bascule. Des erreurs de serveur transitoires ou une latence dans le compartiment S3 peuvent entraîner des échecs de point de contrôle.
- Une fonction de processus que vous avez créée dans laquelle elle communique avec une ressource externe pendant le contrôle, telle qu'Amazon DynamoDB, peut entraîner des échecs de point de contrôle.
- La sérialisation de l'état, telle que l'incompatibilité du sérialiseur avec les données entrantes, peut entraîner des échecs de point de contrôle.
- Le nombre d'unités de traitement Kinesis (KPU) provisionnées pour l'application n'est peut-être pas suffisant. Pour trouver les KPU alloués, utilisez le calcul suivant :
KPU alloués à l'application = Parallélisme / ParallelismPerKPU
- Des tailles d'état d'application plus importantes peuvent entraîner une augmentation de la latence des points de contrôle. Le gestionnaire de tâches met plus de temps à enregistrer le point de contrôle et peut provoquer une exception de mémoire insuffisante.
- Une distribution d'état asymétrique peut entraîner la gestion d'un plus grand nombre de données par rapport aux autres gestionnaires de tâches. Même si des KPU (ressources) suffisantes sont provisionnées, les gestionnaires de 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 que la clé contenant les données présente une cardinalité élevée, il se peut que le point de contrôle soit lent. La lenteur des points de contrôle peut éventuellement entraîner des échecs de point de contrôle.
Résolution
Pour résoudre les problèmes liés à l'échec de votre application Amazon Managed Service pour Apache Flink, effectuez les actions suivantes :
- Utilisez les métriques lastCheckPointDuration et lastCheckpointSize pour surveiller la taille et la durée de votre point de contrôle. La taille de l'état de votre application peut augmenter rapidement et entraîner une augmentation de la taille et de la durée du point de contrôle. 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 utiliser la méthode setParallelism() pour définir le parallélisme d'un opérateur, d'une source de données ou d'un récepteur de données individuel. Pour plus d'informations, consultez la section Exécution parallèle sur le site Web de Flink.
Remarque : Lorsque vous augmentez le parallélisme de l’opérateur, vous pouvez affecter la durée totale du point de contrôle. Vous pouvez également utiliser des points de contrôle non alignés et optimiser en conséquence. Pour plus d'informations, consultez la section Point de contrôle en contre-pression sur le site Web de Flink.
- Réglez les valeurs Parallélisme et ParallelismPerKPU pour une utilisation optimale du KPU. Assurez-vous que la mise à l’échelle automatique est activée pour votre application Amazon Managed Service pour Apache Flink. La valeur du paramètre maxParallelism vous permet de mettre à l’échelle le nombre de KPU. Pour plus d'informations, consultez la section Mise à l'échelle des applications dans Amazon Managed Service pour Apache Flink.
- Définissez le TTL sur l'état pour vous assurer que celui-ci est nettoyé régulièrement. Pour plus d'informations, consultez la section Class StateTtlConfig.Builder sur le site Web de Flink.
- Optimisez le code pour un meilleur partitionnement. Utilisez le partitionnement de rééquilibrage pour répartir les données de manière uniforme. Le partitionnement de rééquilibrage utilise une méthode de distribution selon le principe du tourniquet (round-robin). Pour plus d'informations, consultez la sectionRééquilibrage sur le site Web de Flink.
- Optimisez le code pour réduire la taille de la fenêtre afin de réduire la cardinalité du nombre de clés de la fenêtre.
Informations connexes
Points de contrôle sur le site Web de Flink
Implémentation de la tolérance aux pannes dans Managed Service pour Apache Flink