Apache Flink - Bibliothèques

Dans ce chapitre, nous allons découvrir les différentes bibliothèques d'Apache Flink.

Traitement des événements complexes (CEP)

FlinkCEP est une API dans Apache Flink, qui analyse les modèles d'événement sur les données de streaming continu. Ces événements sont quasiment en temps réel, avec un débit élevé et une faible latence. Cette API est principalement utilisée sur les données de capteur, qui arrivent en temps réel et sont très complexes à traiter.

Le CEP analyse le modèle du flux d'entrée et donne le résultat très bientôt. Il a la capacité de fournir des notifications et des alertes en temps réel au cas où le modèle d'événement serait complexe. FlinkCEP peut se connecter à différents types de sources d'entrée et analyser les modèles qu'elles contiennent.

Voici à quoi ressemble un exemple d'architecture avec CEP -

Les données des capteurs proviendront de différentes sources, Kafka agira comme un cadre de messagerie distribué, qui distribuera les flux à Apache Flink, et FlinkCEP analysera les modèles d'événements complexes.

Vous pouvez écrire des programmes dans Apache Flink pour le traitement d'événements complexes à l'aide de l'API Pattern. Il vous permet de décider des modèles d'événement à détecter à partir des données de flux continu. Vous trouverez ci-dessous quelques-uns des modèles CEP les plus couramment utilisés -

Commencer

Il est utilisé pour définir l'état de départ. Le programme suivant montre comment il est défini dans un programme Flink -

Pattern<Event, ?> next = start.next("next");

Il est utilisé pour définir une condition de filtre dans l'état actuel.

patternState.where(new FilterFunction <Event>() {  
   @Override 
      public boolean filter(Event value) throws Exception { 
   } 
});

Prochain

Il est utilisé pour ajouter un nouvel état de modèle et l'événement correspondant nécessaire pour transmettre le modèle précédent.

Pattern<Event, ?> next = start.next("next");

Suivi par

Il est utilisé pour ajouter un nouvel état de modèle, mais ici, d'autres événements peuvent se produire entre deux événements correspondants.

Pattern<Event, ?> followedBy = start.followedBy("next");

Gelly

L'API Graph d'Apache Flink est Gelly. Gelly est utilisé pour effectuer une analyse graphique sur les applications Flink à l'aide d'un ensemble de méthodes et d'utilitaires. Vous pouvez analyser d'énormes graphiques à l'aide de l'API Apache Flink de manière distribuée avec Gelly. Il existe d'autres bibliothèques de graphes comme Apache Giraph dans le même but, mais comme Gelly est utilisé par-dessus Apache Flink, il utilise une seule API. Ceci est très utile du point de vue du développement et de l'exploitation.

Examinons un exemple en utilisant l'API Apache Flink - Gelly.

Tout d'abord, vous devez copier 2 fichiers jar Gelly du répertoire opt d'Apache Flink vers son répertoire lib. Ensuite, exécutez le pot flink-gelly-examples.

cp opt/flink-gelly* lib/ 
./bin/flink run examples/gelly/flink-gelly-examples_*.jar

Examinons maintenant l'exemple de PageRank.

PageRank calcule un score par sommet, qui est la somme des scores de PageRank transmis sur les bords entrants. Le score de chaque sommet est divisé uniformément entre les arêtes extérieures. Les sommets à score élevé sont liés à d'autres sommets à score élevé.

Le résultat contient l'ID de sommet et le score PageRank.

usage: flink run examples/flink-gelly-examples_<version>.jar --algorithm PageRank [algorithm options] --input <input> [input options] --output <output> [output options] 

./bin/flink run examples/gelly/flink-gelly-examples_*.jar --algorithm PageRank --input CycleGraph --vertex_count 2 --output Print