Apache Flink - Bibliotecas
Neste capítulo, aprenderemos sobre as diferentes bibliotecas do Apache Flink.
Processamento de Eventos Complexos (CEP)
FlinkCEP é uma API do Apache Flink, que analisa padrões de eventos em dados de streaming contínuo. Esses eventos são quase em tempo real, com alto rendimento e baixa latência. Esta API é usada principalmente em dados do Sensor, que vêm em tempo real e são muito complexos de processar.
O CEP analisa o padrão do fluxo de entrada e dá o resultado muito em breve. Ele tem a capacidade de fornecer notificações e alertas em tempo real caso o padrão do evento seja complexo. O FlinkCEP pode se conectar a diferentes tipos de fontes de entrada e analisar padrões nelas.
É assim que uma arquitetura de amostra com CEP se parece -
Os dados do sensor virão de diferentes fontes, o Kafka atuará como uma estrutura de mensagens distribuída, que distribuirá os fluxos para o Apache Flink e o FlinkCEP analisará os padrões de eventos complexos.
Você pode escrever programas no Apache Flink para processamento de eventos complexos usando a API Pattern. Ele permite que você decida os padrões de eventos a serem detectados nos dados de fluxo contínuo. Abaixo estão alguns dos padrões CEP mais comumente usados -
Início
É usado para definir o estado inicial. O programa a seguir mostra como ele é definido em um programa Flink -
Pattern<Event, ?> next = start.next("next");
Onde
É usado para definir uma condição de filtro no estado atual.
patternState.where(new FilterFunction <Event>() {
@Override
public boolean filter(Event value) throws Exception {
}
});
Próximo
É usado para anexar um novo estado de padrão e o evento correspondente necessário para passar o padrão anterior.
Pattern<Event, ?> next = start.next("next");
Seguido por
É usado para anexar um novo estado de padrão, mas aqui outros eventos podem ocorrer b / w dois eventos correspondentes.
Pattern<Event, ?> followedBy = start.followedBy("next");
Gelly
A API Graph do Apache Flink é Gelly. Gelly é usado para realizar análises gráficas em aplicativos Flink usando um conjunto de métodos e utilitários. Você pode analisar gráficos enormes usando a API Apache Flink de maneira distribuída com o Gelly. Existem outras bibliotecas de gráficos também como o Apache Giraph para o mesmo propósito, mas como o Gelly é usado no topo do Apache Flink, ele usa uma API única. Isso é muito útil do ponto de vista de desenvolvimento e operação.
Vamos executar um exemplo usando a API Apache Flink - Gelly.
Em primeiro lugar, você precisa copiar 2 arquivos jar Gelly do diretório opt do Apache Flink para o diretório lib. Em seguida, execute flink-gelly-examples jar.
cp opt/flink-gelly* lib/
./bin/flink run examples/gelly/flink-gelly-examples_*.jar
Vamos agora executar o exemplo do PageRank.
O PageRank calcula uma pontuação por vértice, que é a soma das pontuações do PageRank transmitidas nas bordas. A pontuação de cada vértice é dividida igualmente entre as bordas externas. Vértices de alta pontuação são vinculados a outros vértices de alta pontuação.
O resultado contém o ID do vértice e a pontuação do 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