Flink — это платформа для потоковой передачи больших данных с открытым исходным кодом. Она может одновременно выполнять пакетную и потоковую обработку. Она обладает такими преимуществами, как отказоустойчивость, высокая пропускная способность и низкая задержка. В этой статье кратко описывается модель программирования flink.
Тип набора данных:
- Бесконечный набор данных: бесконечный сбор данных для непрерывной интеграции
- Ограниченный набор данных: конечный набор данных, который не изменяется.
Общие бесконечные наборы данных:
- Данные о взаимодействии между пользователями и клиентами в режиме реального времени
- Журналы, генерируемые приложением в режиме реального времени
- Записи транзакций на финансовых рынках в режиме реального времени
- …
Каковы модели операций с данными?
- Потоковая передача: вычисления выполняются непрерывно, пока производятся данные.
- Пакетная обработка: выполнение вычислений в течение заданного времени, освобождение ресурсов компьютера по завершении
Flink может обрабатывать как ограниченные наборы данных, так и неограниченные наборы данных, а также потоки или пакеты данных.
Что такое Флинк?
Снизу вверх:
1. Развертывание: Flink поддерживает локальную работу, может работать в автономном кластере или кластере, управляемом YARN или Mesos, а также может быть развернут в облаке. 2. Эксплуатация. Ядром Flink является механизм распределенной потоковой передачи данных, что означает, что данные обрабатываются по одному событию за раз. 3. API: DataStream, DataSet, Table, SQL API. 4. Библиотеки расширений: Flink также включает специальные библиотеки кода для обработки сложных событий, машинного обучения, обработки графов и совместимости с Apache Storm.
Модель программирования потока данных Flink
уровень абстракцииFlink обеспечивает различные уровни абстракции для разработки потоковых или пакетных приложений.
Нижний уровень предоставляет потоки с отслеживанием состояния, которые встроены в API DataStream через процедурные функции, которые позволяют пользователям свободно обрабатывать события из одного или нескольких потоков данных с согласованным отказоустойчивым состоянием. В дополнение к этому пользователи могут регистрировать время событий и обрабатывать обратные вызовы событий, что позволяет программам выполнять сложные вычисления.
API DataStream/DataSet — это основной API, предоставляемый Flink.DataSet обрабатывает ограниченные наборы данных, а DataStream обрабатывает ограниченные или неограниченные потоки данных. Пользователи могут преобразовывать/вычислять данные с помощью различных методов (map/flatmap/window/keyby/sum/max/min/avg/join и т. д.).
Table API — это декларативный DSL, ориентированный на таблицы, в котором таблица может динамически изменяться (при выражении потоковых данных). Table API предоставляет такие операции, как выбор, проект, объединение, группировка, агрегирование и т. д., но он более лаконичен (меньше кода).
Вы можете легко переключаться между таблицами и DataStream/DataSet, а также разрешить программам смешивать Table API с DataStream и DataSet.
- Абстракцией высшего уровня, предоставляемой Flink, является SQL. Этот уровень абстракции аналогичен Table API с точки зрения синтаксиса и выразительности, но выражает программы в форме выражений запроса SQL. Абстракция SQL тесно взаимодействует с Table API, и SQL-запросы могут выполняться непосредственно в таблицах, определенных Table API.
Программа Flink и структура потока данных
Структура приложения Flink показана на рисунке выше:
- Источник: источник данных. Flink имеет четыре типа источников при потоковой и пакетной обработке: источник на основе локальной коллекции, источник на основе файла, источник на основе сетевого сокета и пользовательский источник. Общие пользовательские источники включают Apache kafka, Amazon Kinesis Streams, RabbitMQ, Twitter Streaming API, Apache NiFi и т. д. Конечно, вы также можете определить свой собственный источник.
- Преобразование: Различные операции преобразования данных, в том числе Map / FlatMap / Filter / KeyBy / Reduce / Fold / Aggregations / Window / WindowAll / Union / Window join / Split / Select / Project и т. д. Существует множество операций, которые могут вычислять преобразование данных в желаемые данные.
- Приемник: получатель, место, где Flink преобразует вычисленные данные и отправляет их. Возможно, вам потребуется их сохранить. Общие приемники Flink можно разделить примерно на следующие категории: запись в файл, распечатка, запись в сокет и пользовательский приемник. К распространенным пользовательским приемникам относятся Apache kafka, RabbitMQ, MySQL, ElasticSearch, Apache Cassandra, Hadoop FileSystem и т. д. Точно так же вы можете определить свой собственный приемник.
Серия статей Flink:
Введение в Flink (1) — Введение в Apache Flink
Введение в Flink (2) — Введение в архитектуру Flink
Начало работы с Flink (3) — среда и развертывание
Больше вычислений в реальном времени, Flink, Kafka и других связанных технических сообщений в блогах, добро пожаловать, чтобы обратить внимание на потоковые вычисления в реальном времени.