Apache Flink - Библиотеки
В этой главе мы узнаем о различных библиотеках Apache Flink.
Комплексная обработка событий (CEP)
FlinkCEP - это API в Apache Flink, который анализирует шаблоны событий для непрерывных потоковых данных. Эти события происходят почти в реальном времени, имеют высокую пропускную способность и низкую задержку. Этот API используется в основном для данных датчиков, которые поступают в режиме реального времени и очень сложны для обработки.
CEP анализирует структуру входящего потока и очень скоро выдает результат. Он имеет возможность предоставлять уведомления и предупреждения в режиме реального времени в случае сложной схемы событий. FlinkCEP может подключаться к различным источникам входного сигнала и анализировать в них закономерности.
Вот как выглядит образец архитектуры с CEP -
Данные датчиков будут поступать из разных источников, Kafka будет действовать как среда распределенного обмена сообщениями, которая будет распределять потоки в Apache Flink, а FlinkCEP будет анализировать сложные шаблоны событий.
Вы можете писать программы на Apache Flink для сложной обработки событий с помощью Pattern API. Это позволяет вам выбирать шаблоны событий для обнаружения из данных непрерывного потока. Ниже приведены некоторые из наиболее часто используемых шаблонов CEP -
Начать
Он используется для определения начального состояния. Следующая программа показывает, как это определяется в программе Flink -
Pattern<Event, ?> next = start.next("next");
куда
Он используется для определения условия фильтрации в текущем состоянии.
patternState.where(new FilterFunction <Event>() {
@Override
public boolean filter(Event value) throws Exception {
}
});
следующий
Он используется для добавления нового состояния шаблона и соответствующего события, необходимого для передачи предыдущего шаблона.
Pattern<Event, ?> next = start.next("next");
С последующим
Он используется для добавления нового состояния шаблона, но здесь могут происходить другие события ч / б двух совпадающих событий.
Pattern<Event, ?> followedBy = start.followedBy("next");
Gelly
API-интерфейс Apache Flink Graph - это Gelly. Gelly используется для выполнения графического анализа в приложениях Flink с использованием набора методов и утилит. Вы можете анализировать огромные графы с помощью Apache Flink API распределенным образом с помощью Gelly. Существуют и другие библиотеки графов, такие как Apache Giraph, для той же цели, но поскольку Gelly используется поверх Apache Flink, он использует единый API. Это очень полезно с точки зрения разработки и эксплуатации.
Давайте запустим пример, используя Apache Flink API - Gelly.
Во-первых, вам нужно скопировать 2 файла Gelly jar из каталога opt Apache Flink в его каталог lib. Затем запустите jar flink-gelly-examples.
cp opt/flink-gelly* lib/
./bin/flink run examples/gelly/flink-gelly-examples_*.jar
Давайте теперь запустим пример PageRank.
PageRank вычисляет оценку для каждой вершины, которая представляет собой сумму оценок PageRank, переданных за границу. Оценка каждой вершины поровну делится между внешними ребрами. Вершины с высокими оценками связаны с другими вершинами с высокими оценками.
Результат содержит идентификатор вершины и рейтинг 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