Введение в Flink (4) — Модель программирования

Большие данные

file

Flink — это платформа для потоковой передачи больших данных с открытым исходным кодом. Она может одновременно выполнять пакетную и потоковую обработку. Она обладает такими преимуществами, как отказоустойчивость, высокая пропускная способность и низкая задержка. В этой статье кратко описывается модель программирования flink.

Тип набора данных:

  • Бесконечный набор данных: бесконечный сбор данных для непрерывной интеграции
  • Ограниченный набор данных: конечный набор данных, который не изменяется.

Общие бесконечные наборы данных:

  • Данные о взаимодействии между пользователями и клиентами в режиме реального времени
  • Журналы, генерируемые приложением в режиме реального времени
  • Записи транзакций на финансовых рынках в режиме реального времени

Каковы модели операций с данными?

  • Потоковая передача: вычисления выполняются непрерывно, пока производятся данные.
  • Пакетная обработка: выполнение вычислений в течение заданного времени, освобождение ресурсов компьютера по завершении

Flink может обрабатывать как ограниченные наборы данных, так и неограниченные наборы данных, а также потоки или пакеты данных.

Что такое Флинк?

file

file

file

file

Снизу вверх:

1. Развертывание: Flink поддерживает локальную работу, может работать в автономном кластере или кластере, управляемом YARN или Mesos, а также может быть развернут в облаке. 2. Эксплуатация. Ядром Flink является механизм распределенной потоковой передачи данных, что означает, что данные обрабатываются по одному событию за раз. 3. API: DataStream, DataSet, Table, SQL API. 4. Библиотеки расширений: Flink также включает специальные библиотеки кода для обработки сложных событий, машинного обучения, обработки графов и совместимости с Apache Storm.

Модель программирования потока данных Flink

уровень абстракцииFlink обеспечивает различные уровни абстракции для разработки потоковых или пакетных приложений.

file

Нижний уровень предоставляет потоки с отслеживанием состояния, которые встроены в 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 и структура потока данных

file

Структура приложения 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 и других связанных технических сообщений в блогах, добро пожаловать, чтобы обратить внимание на потоковые вычисления в реальном времени.

file