Q : Qu'est-ce qu'Apache Flink ?
Apache Flink est un moteur distribué open source pour le traitement dynamique de jeux de données illimités (flux) et limités (lots). Les applications de traitement des flux sont conçues pour fonctionner en continu, avec un temps d'arrêt minimal, et pour traiter les données au fur et à mesure de leur ingestion. Apache Flink est conçu pour un traitement à faible latence, pour effectuer des calculs en mémoire, pour une haute disponibilité, pour éliminer les points de défaillance uniques et pour effectuer une mise à l'échelle horizontale.
Les fonctionnalités d'Apache Flink incluent une gestion avancée des états avec des garanties de cohérence ponctuelle, une sémantique de traitement au moment de l'événement ainsi qu'une gestion sophistiquée des données hors service et en retard. Apache Flink a été développé pour donner la priorité au streaming et propose une interface de programmation unifiée pour le traitement par flux et par lots.
Pourquoi utiliseriez-vous Apache Flink ?
Apache Flink est utilisé pour créer de nombreux types d'applications de streaming et de traitement par lots, en raison de son large éventail de fonctionnalités.
Voici certains des types courants d'applications alimentées par Apache Flink :
- Applications axées sur les événements, qui ingèrent des événements provenant d'un ou de plusieurs flux d'événements et qui exécutent des calculs, des mises à jour d'état ou des actions externes. Le traitement dynamique permet de mettre en œuvre une logique allant au-delà de la transformation d'un message unique, où les résultats dépendent de l'historique des événements ingérés.
- Applications d'analytique de données, extrayant des informations et des informations à partir de données. Exécutées traditionnellement en interrogeant des ensembles de données limités, puis en réexécutant les requêtes ou en modifiant les résultats pour intégrer de nouvelles données. Avec Apache Flink, l'analyse peut être exécutée en mettant à jour en continu, en diffusant des requêtes ou en traitant des événements ingérés en temps réel, en émettant et en mettant à jour les résultats en continu.
- Applications de pipeline de données, transformant et enrichissant les données à déplacer d'un stockage de données à un autre. Traditionnellement, ETL (extraction, transformation, chargement) est exécuté périodiquement, par lots. Avec Apache Flink, le processus peut fonctionner en continu, déplaçant les données avec une faible latence vers leur destination.
Comment fonctionne Apache Flink ?
Flink est un moteur de traitement de flux à haut débit et à faible latence. Une application Flink consiste en un graphe de flux de données acyclique complexe arbitraire, composé de flux et de transformations. Les données sont ingérées à partir d'une ou de plusieurs sources de données et envoyées vers une ou plusieurs destinations. Les systèmes source et de destination peuvent être des flux, des files d'attente de messages ou d'entrepôts de données, et inclure des fichiers, des bases de données populaires et des moteurs de recherche. Les transformations peuvent être dynamiques, comme les agrégations sur des fenêtres temporelles ou la détection de modèles complexes.
La tolérance aux pannes est atteinte par deux mécanismes distincts : un contrôle automatique et périodique de l'état de l'application, copié sur un stockage persistant, pour permettre une restauration automatique en cas de panne ; des points de sauvegarde à la demande, qui enregistrent une image cohérente de l'état d'exécution, pour autoriser l'arrêt et la reprise, la mise à jour ou le fork de votre tâche Flink, en conservant l'état de l'application entre les arrêts et les redémarrages. Les mécanismes de point de contrôle et de point de sauvegarde sont asynchrones, ce qui permet de prendre un instantané cohérent de l'état sans « arrêter le monde », tandis que l'application continue de traiter les événements.
Quels sont les avantages d'Apache Flink ?
Traitez à la fois des jeux de données illimités (flux) et limités (lots)
Apache Flink peut traiter à la fois des jeux de données illimités et limités, c'est-à-dire des flux et des données par lots. Les flux illimités ont un début, mais ils sont pratiquement infinis et ne s'arrêtent jamais. Le traitement ne peut théoriquement jamais s'arrêter.
Les données limitées, comme les tables, sont finies et peuvent être traitées du début à la fin en un temps limité.
Apache Flink fournit des algorithmes et des structures de données pour prendre en charge le traitement limité et illimité via la même interface de programmation. Les applications traitant des données illimitées s'exécutent en continu. Les applications traitant des données limitées mettront fin à leur exécution lorsqu'elles atteindront la fin des jeux de données d'entrée.
Exécuter des applications à l'échelle
Apache Flink est conçu pour exécuter des applications dynamiques à pratiquement n'importe quelle échelle. Le traitement est parallélisé sur des milliers de tâches, réparties sur plusieurs machines simultanément.
L'état est également partitionné et distribué horizontalement, ce qui permet de conserver plusieurs téraoctets sur plusieurs machines. L'état est vérifié de manière incrémentielle vers un stockage persistant.
Performances en mémoire
Les données circulant dans l'application et dans l'état sont partitionnées sur plusieurs machines. Ainsi, le calcul peut être effectué en accédant à des données locales, souvent en mémoire.
Cohérence de l'état en une seule fois
Les applications qui ne se limitent pas à des transformations de messages uniques sont dynamiques. La logique métier doit mémoriser les événements ou les résultats intermédiaires. Apache Flink garantit la cohérence de l'état interne, même en cas de panne et entre l'arrêt et le redémarrage de l'application. L'effet de chaque message sur l'état interne est toujours appliqué une seule fois, même si l'application peut recevoir des doublons de la source de données lors de la restauration ou du redémarrage.
Large gamme de connecteurs
Apache Flink possède un certain nombre de connecteurs éprouvés pour les systèmes de messagerie et de streaming, les magasins de données, les moteurs de recherche et les systèmes de fichiers les plus courants. Apache Kafka, Amazon Kinesis Data Streams, Amazon SQS, Active MQ, Rabbit MQ, NiFi, OpenSearch et ElasticSearch, DynamoDB, HBase et toute base de données fournissant un client JDBC en sont des exemples.
Plusieurs niveaux d'abstractions
Apache Flink propose plusieurs niveaux d'abstraction pour l'interface de programmation. À partir de SQL en streaming de niveau supérieur et de l'API de table, en utilisant des abstractions familières telles que les tables, les jointures et les regroupements. L'API DataStream offre un niveau d'abstraction inférieur mais également un meilleur contrôle, grâce à la sémantique des flux, au fenêtrage et au mappage. Enfin, l'API ProcessFunction permet un contrôle précis du traitement de chaque message et un contrôle direct de l'état. Toutes les interfaces de programmation fonctionnent parfaitement avec les jeux de données illimités (flux) et limités (tables). Différents niveaux d'abstractions peuvent être utilisés dans la même application, en tant qu'outil approprié pour résoudre chaque problème.
Multiples langages de programmation
Apache Flink peut être programmé dans plusieurs langages, du SQL en streaming de haut niveau à Python, Scala, Java, en passant par d'autres langages JVM tels que Kotlin.
Quels sont les cas d'utilisation d'Apache Flink ?
Parmi les cas d'utilisation d'Apache Flink figurent :
-
Des exemples de cas d'utilisation pour les applications axées sur les événements, notamment, la détection des fraudes, la détection des anomalies, les alertes basées sur des règles, la personnalisation de l'expérience utilisateur en temps réel. Flink est parfaitement adapté à tous les cas d'utilisation qui nécessitent un traitement dynamique des flux d'événements, la prise en compte de l'évolution dans le temps, la détection des modèles complexes ou le calcul de statistiques sur des fenêtres temporelles afin de détecter les écarts par rapport aux seuils attendus.
-
Flink peut également prendre en charge de manière efficace des cas d'utilisation de l'analytique de diffusion, notamment le suivi de la qualité, l'analytique ad hoc des données en direct, l'analytique des parcours de navigation et l'évaluation des expériences de produits. Vous pouvez tirer parti du niveau d'abstraction élevé de l'interface de programmation SQL ou de l'API Table pour exécuter les mêmes analytiques à la fois sur des données de diffusion en direct et sur des lots de données historiques.
-
Les cas d'utilisation pris en charge efficacement par un ETL continu incluent la surveillance du système de fichiers et l'écriture de données dans un journal, la matérialisation d'un flux d'événements dans une base de données, ainsi que la création et l'affinement progressifs d'un index de recherche. En tirant parti du vaste ensemble de connecteurs, Flink peut lire directement dans plusieurs types de magasins de données, ingérer des flux d'événements de modification et même capturer directement les modifications. L'ingestion et le traitement continus des modifications, ainsi que la mise à jour directe des systèmes de destination permet à Flink de réduire le délai de synchronisation des données à quelques secondes ou moins.
Qui utilise Apache Flink ?
NortonLifeLock
NortonLifeLock est une société internationale de cybersécurité et de confidentialité sur Internet, qui propose des services à des millions de clients en matière de sécurité des appareils, d'identité et de confidentialité en ligne pour la maison et la famille.
NortonLifeLock propose un produit VPN sous forme de service freemium aux utilisateurs. Ils doivent donc appliquer les limites d'utilisation en temps réel pour empêcher les utilisateurs freemium d'utiliser le service lorsque leur utilisation dépasse la limite. Le défi pour NortonLifeLock est de le faire de manière fiable et abordable.
NortonLifeLock a simplifié la mise en œuvre de l'agrégation au niveau des utilisateurs et des appareils en adoptant Apache Flink.
Samsung SmartThings
En tant que filiale indépendante de Samsung, SmartThings est l'un des principaux écosystèmes IoT au monde, qui offre à tout le monde le moyen le plus simple de créer une maison connectée.
Samsung SmartThings rencontrait des problèmes tels que le fait de réserver les ressources à des applications individuelles. Il en résulte un retard et une dégradation des performances lors du traitement des données. Cette situation les a finalement conduits à des frais généraux élevés et coûteux liés au maintien de la charge de travail dans le cadre des opérations. Ils ont dû repenser l'architecture de la plateforme de données.
Ils sont passés d'Apache Spark à Apache Flink.
BT Group
BT Group est le principal fournisseur de télécommunications et de réseaux au Royaume-Uni et l'un des principaux fournisseurs de services et de solutions de communication au monde, au service des clients dans 180 pays. Ses principales activités au Royaume-Uni incluent la prestation de services de téléphonie fixe, de téléphonie mobile, de haut débit et de télévision (y compris le sport), ainsi que d'une gamme de produits et de services par le biais de réseaux fixes et mobiles convergents pour les consommateurs, les entreprises et les clients du secteur public.
BT avait besoin d'une application de surveillance des services pour soutenir le déploiement de Digital Voice, son nouveau produit grand public permettant d'effectuer des appels vocaux en haute définition via son réseau haut débit britannique.
BT a créé un service d'analytique piloté par les événements à l'aide d'Apache Flink pour ingérer, traiter et visualiser les données de service.
Autodesk
Autodesk, un fournisseur de logiciels d'ingénierie et de conception 3D de renom, souhaite aller au-delà de la création et de la commercialisation d'un logiciel. La société souhaite également s'assurer que ses millions d'utilisateurs dans le monde pourront utiliser ce logiciel dans des conditions optimales.
Autodesk développe des logiciels pour les personnes qui créent des choses. Ils servent plus de 200 millions de clients. Ils devaient éliminer les silos afin de détecter et de résoudre plus rapidement les problèmes des clients. Ils recherchaient un moyen cohérent de collecter et de mesurer les indicateurs avec une équipe opérationnelle de petite taille sans augmenter les coûts ni créer un blocage des données.
NHL
La Ligue nationale de hockey (NHL) est la deuxième plus ancienne des quatre principales ligues professionnelles de sports d'équipe en Amérique du Nord. Aujourd'hui, la NHL compte 32 clubs membres, chacun reflétant la composition internationale de la Ligue, avec des joueurs provenant de plus de 20 pays représentés dans les formations des équipes.
La NHL était confrontée à plusieurs défis techniques, tels que l'identification des fonctionnalités requises et des méthodes de modélisation pour prévoir un événement très incertain, et l'identification de la manière d'utiliser les données des capteurs PPT en continu pour identifier le lieu d'une mise en jeu, les joueurs impliqués et la probabilité que chaque joueur gagne la mise en jeu, le tout en quelques dixièmes de secondes.
Grâce à Apache Flink, la NHL a pu non seulement prédire le vainqueur d'une mise en jeu, mais aussi jeter les bases de la résolution d'un certain nombre de problèmes similaires en temps réel et de manière rentable.
Poshmark
Poshmark est un marketplace social de premier plan pour la mode neuve et d'occasion pour les femmes, les hommes, les enfants, les animaux de compagnie, la maison, etc. Sa communauté de plus de 80 millions de personnes aux États-Unis, au Canada, en Australie et en Inde façonne l'avenir du shopping pour qu'il soit simple, social et durable.
Poshmark s'est concentrée sur la croissance de son chiffre d'affaires grâce à la personnalisation et à l'amélioration de l'expérience utilisateur. L'approche initiale consistant à utiliser le traitement par lots pour la personnalisation et la sécurité n'a pas répondu aux attentes en matière d'amélioration de l'expérience client.
Poshmark a conçu la personnalisation en temps réel en utilisant l'enrichissement des données en temps réel avec Apache Flink.
Comment AWS peut-il aider à exécuter des applications Apache Flink dans le cloud ?
Service géré Amazon pour Apache Flink est une solution entièrement gérée pour exécuter les applications Apache Flink. Le service géré Amazon pour Apache Flink simplifie la création, la gestion et l'intégration d'applications Apache Flink à d'autres services AWS. Avec service géré Amazon pour Apache Flink, il n'y a aucun serveur à gérer, aucun frais minimum ni aucun coût d'installation. La configuration est hautement disponible par défaut. L'état de l'application est entièrement géré et stocké dans un backend à haute durabilité pour garantir la tolérance aux pannes. L'application est contrôlée par une API simple qui permet d'arrêter, de démarrer, de configurer et de mettre à l'échelle l'application.
Service géré Amazon pour Apache Flink Studio propose une interface interactive de bloc-notes pour Apache Flink. À l'aide d'un bloc-notes Apache Zeppelin, vous pouvez exécuter du code SQL, Python et Scala sur Apache Flink, à des fins de développement et d'expérimentation, d'inspection ou de visualisation des données.
Amazon EMR prend également en charge Apache Flink en tant qu'application YARN afin que vous puissiez gérer les ressources tout en exécutant d'autres applications au sein du cluster.
Apache Flink prend en charge Kubernetes de manière native. Vous pouvez héberger vous-même Apache Flink dans un environnement conteneurisé tel qu'Amazon Elastic Kubernetes Service (Amazon EKS) ou le gérer entièrement vous-même à l'aide d'Amazon Elastic Compute Cloud (Amazon EC2).
Commencez à utiliser Apache Flink sur AWS en créant un compte dès aujourd'hui.