Apache Flink - Librerie

In questo capitolo impareremo le diverse librerie di Apache Flink.

Elaborazione di eventi complessi (CEP)

FlinkCEP è un'API in Apache Flink, che analizza i modelli di eventi sui dati in streaming continuo. Questi eventi sono quasi in tempo reale, che hanno un throughput elevato e una bassa latenza. Questa API viene utilizzata principalmente sui dati del sensore, che arrivano in tempo reale e sono molto complessi da elaborare.

CEP analizza il modello del flusso di input e fornisce il risultato molto presto. Ha la capacità di fornire notifiche e avvisi in tempo reale nel caso in cui il pattern degli eventi sia complesso. FlinkCEP può connettersi a diversi tipi di sorgenti di input e analizzare i modelli in esse contenuti.

Ecco come appare un'architettura di esempio con CEP:

I dati dei sensori arriveranno da diverse fonti, Kafka fungerà da framework di messaggistica distribuita, che distribuirà i flussi ad Apache Flink e FlinkCEP analizzerà i complessi modelli di eventi.

È possibile scrivere programmi in Apache Flink per l'elaborazione di eventi complessi utilizzando Pattern API. Consente di decidere i modelli di eventi da rilevare dai dati del flusso continuo. Di seguito sono riportati alcuni dei modelli CEP più comunemente utilizzati:

Inizio

Viene utilizzato per definire lo stato iniziale. Il seguente programma mostra come viene definito in un programma Flink:

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

Dove

Viene utilizzato per definire una condizione di filtro nello stato corrente.

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

Il prossimo

Viene utilizzato per aggiungere un nuovo stato del pattern e l'evento corrispondente necessario per passare il pattern precedente.

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

Seguito da

Viene utilizzato per aggiungere un nuovo stato del pattern, ma qui possono verificarsi altri eventi in bianco e nero con due eventi corrispondenti.

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

Gelly

L'API Graph di Apache Flink è Gelly. Gelly viene utilizzato per eseguire analisi di grafici su applicazioni Flink utilizzando una serie di metodi e utilità. Puoi analizzare enormi grafici utilizzando Apache Flink API in modo distribuito con Gelly. Esistono anche altre librerie grafiche come Apache Giraph per lo stesso scopo, ma poiché Gelly viene utilizzato sopra Apache Flink, utilizza una singola API. Questo è molto utile dal punto di vista dello sviluppo e del funzionamento.

Facciamo un esempio utilizzando Apache Flink API - Gelly.

In primo luogo, è necessario copiare 2 file jar Gelly dalla directory opt di Apache Flink alla sua directory lib. Quindi esegui flink-gelly-examples jar.

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

Eseguiamo ora l'esempio del PageRank.

Il PageRank calcola un punteggio per vertice, che è la somma dei punteggi di PageRank trasmessi sugli in-edge. Il punteggio di ogni vertice è diviso equamente tra i bordi esterni. I vertici con punteggio elevato sono collegati da altri vertici con punteggio elevato.

Il risultato contiene l'ID vertice e il punteggio 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