Apache Flink - Bibliotecas

En este capítulo, aprenderemos sobre las diferentes bibliotecas de Apache Flink.

Procesamiento de eventos complejos (CEP)

FlinkCEP es una API en Apache Flink, que analiza patrones de eventos en datos de transmisión continua. Estos eventos son casi en tiempo real, que tienen un alto rendimiento y baja latencia. Esta API se utiliza principalmente en datos de sensores, que vienen en tiempo real y son muy complejos de procesar.

CEP analiza el patrón del flujo de entrada y da el resultado muy pronto. Tiene la capacidad de proporcionar notificaciones y alertas en tiempo real en caso de que el patrón de eventos sea complejo. FlinkCEP puede conectarse a diferentes tipos de fuentes de entrada y analizar patrones en ellas.

Así se ve una arquitectura de muestra con CEP:

Los datos del sensor vendrán de diferentes fuentes, Kafka actuará como un marco de mensajería distribuida, que distribuirá las transmisiones a Apache Flink, y FlinkCEP analizará los patrones de eventos complejos.

Puede escribir programas en Apache Flink para el procesamiento de eventos complejos utilizando Pattern API. Le permite decidir los patrones de eventos a detectar a partir de los datos de flujo continuo. A continuación se muestran algunos de los patrones CEP más utilizados:

Empezar

Se utiliza para definir el estado inicial. El siguiente programa muestra cómo se define en un programa Flink:

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

Dónde

Se utiliza para definir una condición de filtro en el estado actual.

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

próximo

Se utiliza para agregar un nuevo estado de patrón y el evento coincidente necesario para pasar el patrón anterior.

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

Seguido por

Se usa para agregar un nuevo estado de patrón, pero aquí pueden ocurrir otros eventos b / w dos eventos coincidentes.

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

Gelly

La API Graph de Apache Flink es Gelly. Gelly se utiliza para realizar análisis de gráficos en aplicaciones Flink utilizando un conjunto de métodos y utilidades. Puede analizar grandes gráficos utilizando Apache Flink API de forma distribuida con Gelly. Hay otras bibliotecas de gráficos también como Apache Giraph para el mismo propósito, pero como Gelly se usa sobre Apache Flink, usa una API única. Esto es muy útil desde el punto de vista del desarrollo y la operación.

Ejecutemos un ejemplo usando Apache Flink API - Gelly.

En primer lugar, debe copiar 2 archivos jar de Gelly desde el directorio opt de Apache Flink a su directorio lib. Luego ejecute flink-gelly-examples jar.

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

Ejecutemos ahora el ejemplo de PageRank.

PageRank calcula una puntuación por vértice, que es la suma de las puntuaciones de PageRank transmitidas por los bordes. La puntuación de cada vértice se divide uniformemente entre los bordes. Los vértices de alta puntuación están vinculados a otros vértices de alta puntuación.

El resultado contiene el ID de vértice y la puntuación de 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