Apache Flink – это распределенный движок с открытым исходным кодом для обработки неограниченных (через потоковую передачу) и ограниченных (через пакетную передачу) наборов данных с отслеживанием состояния. Приложения потоковой обработки предназначены для непрерывной работы с минимальным временем простоя и обработки данных по мере их получения. Сервис Apache Flink разработан для обработки данных с низкой задержкой, выполнения вычислений в памяти, обеспечения высокой доступности, устранения единой точки сбоев и горизонтального масштабирования.

Функции Apache Flink включают в себя расширенное управление состояниями с гарантиями строго однократной согласованности состояния, семантику обработки во время событий со сложной обработкой внепорядковых и поздних данных. Сервис Apache Flink был разработан для потоковой передачи. Он предлагает унифицированный программный интерфейс как для потоковой, так и для пакетной обработки.

Благодаря широкому набору функций Apache Flink используется для создания множества различных типов потоковых и пакетных приложений.
Вот некоторые из распространенных типов приложений на базе Apache Flink.

  • Приложения, управляемые событиями, получающие события из одного или нескольких потоков событий и выполняющие вычисления, обновления состояния либо внешние действия. Обработка с отслеживанием состояния позволяет реализовать логику, выходящую за рамки преобразования одного сообщения, где результаты зависят от истории полученных событий.
  • Приложения для анализа данных, извлекающие информацию и аналитику из данных. Традиционно эти операции выполняются путем запроса конечных наборов данных и повторного выполнения запросов или изменения результатов для включения новых данных. С помощью Apache Flink анализ можно выполнять путем постоянного обновления, потоковой передачи запросов или обработки полученных событий в режиме реального времени, постоянно выдавая и обновляя результаты.
  • Приложения линии передачи данных, преобразующие и обогащающие данные для перемещения из одного носителя данных в другой. Традиционно процедура извлечения, преобразования и загрузки (ETL) выполняется периодически, в пакетном режиме. Благодаря Apache Flink процесс может быть непрерывным, а перемещать данные на необходимый носитель можно с низкой задержкой.

Flink – это движок потоковой обработки с высокой пропускной способностью и низкой задержкой. Приложение Flink состоит из произвольного сложного ациклического графа потока данных, включающего потоки и преобразования. Данные поступают из одного или нескольких источников и отправляются в одно либо несколько мест назначения. Исходные и целевые системы могут представлять собой потоки, очереди сообщений или хранилища данных и включать файлы, популярные базы данных и поисковые системы. Преобразования могут быть с сохранением состояния, например агрегирование по временным окнам или обнаружение сложных закономерностей. 

Отказоустойчивость достигается с помощью двух отдельных механизмов: автоматической и периодической проверки состояния приложения, копируемого в постоянное хранилище для автоматического восстановления в случае сбоя; точек сохранения по запросу, сохраняющих согласованный образ состояния выполнения и позволяющих останавливать и возобновлять, обновлять или разветвлять задание Flink, сохраняя состояние приложения при остановках и перезапусках. Механизмы контрольных точек и точек сохранения работают в асинхронном режиме и позволяют сделать последовательный снимок состояния, «не останавливая мир», в то время как приложение будет продолжать обрабатывать события.

Обработка как неограниченных (потоковая передача), так и ограниченных (пакетная передача) наборов данных

Apache Flink может обрабатывать как неограниченные, так и ограниченные наборы данных, то есть потоковые и пакетные данные. Неограниченные потоки имеют начало, но теоретически бесконечны и никогда не заканчиваются. Теоретически обработка может длиться вечно.

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

Запуск приложений в любом масштабе

Сервис Apache Flink предназначен для запуска приложений с отслеживанием состояния практически в любом масштабе. Обработка распараллелена на тысячи задач, распределенных по нескольким машинам одновременно.

Состояние также разделено на разделы и распределено по горизонтали, что позволяет хранить несколько терабайт на нескольких машинах. Данные о состоянии постоянно записываются на постоянное хранилище.

Производительность в памяти

Данные, проходящие через приложение, и состояние разделяются между несколькими машинами. Следовательно, вычисления могут быть выполнены путем доступа к локальным данным, часто находящимся в памяти.

Строго однократная согласованность состояния

Приложения, выходящие за рамки преобразований отдельных сообщений, сохраняют состояние. Бизнес-логика должна запоминать события или промежуточные результаты. Apache Flink гарантирует согласованность внутреннего состояния даже в случае сбоя, остановки и перезапуска приложений. Влияние каждого сообщения на внутреннее состояние всегда применяется ровно один раз, независимо от того, может ли приложение получить дубликаты из источника данных при восстановлении или перезапуске.

Широкий выбор коннекторов

Apache Flink имеет ряд проверенных коннекторов для подключения к популярным системам обмена сообщениями и потоковой передачи, хранилищам данных, поисковым движкам и файловой системе. В качестве примеров можно привести Apache Kafka, Потоки данных Amazon Kinesis, Amazon SQS, Active MQ, Rabbit MQ, NiFi, OpenSearch и ElasticSearch, DynamoDB, HBase и любую базу данных, предоставляющую клиентский драйвер JDBC.

Несколько уровней абстракции

Apache Flink предлагает несколько уровней абстракции для программного интерфейса: от потокового SQL более высокого уровня и API таблиц до использования знакомых абстракций, таких как таблицы, объединения и группы. API DataStream предлагает более низкий уровень абстракции, но при этом и больший контроль за счет семантики потоков, окон и сопоставлений. И наконец, ProcessFunction API обеспечивает точный контроль над обработкой каждого сообщения и непосредственное управление состоянием. Все программные интерфейсы без проблем работают как с неограниченными (потоковая передача), так и с ограниченными (таблицы) наборами данных. В одном и том же приложении можно использовать разные уровни абстракции в качестве подходящего инструмента для решения каждой проблемы.

Поддержка нескольких языков программирования

Apache Flink можно программировать на нескольких языках: от высокоуровневого потокового SQL до Python, Scala, Java, а также других языков JVM, таких как Kotlin.

Примеры использования Apache Flink:

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

  • Мониторинг качества, специальный анализ данных в режиме реального времени, анализ посещений, оценка экспериментов с продуктами – это примеры использования потоковой аналитики, которые Flink может эффективно поддерживать. Используя высокий уровень абстракции SQL или программного интерфейса Table API, вы можете выполнять одну и ту же аналитику как для потоковых данных в режиме реального времени, так и для пакетов исторических данных.

  • Мониторинг файловой системы и запись данных в журнал, материализация потока событий в базу данных, поэтапное построение и уточнение индекса поиска – все это варианты использования, эффективно поддерживаемые непрерывным ETL. Используя широкий набор коннекторов, Flink может напрямую считывать данные из нескольких типов хранилищ, получать потоки событий изменений и даже напрямую фиксировать изменения. Постоянно получая и обрабатывая изменения, а также непосредственно обновляя целевые системы, Flink может сократить задержку синхронизации данных до нескольких секунд или меньше.

NortonLifeLock

NortonLifeLock — глобальная компания, занимающаяся кибербезопасностью и конфиденциальностью в Интернете, которая предлагает миллионам клиентов услуги по обеспечению безопасности устройств, идентификации и конфиденциальности в Интернете для дома и семьи.

NortonLifeLock предлагает пользователям VPN в качестве бесплатного сервиса. Таким образом, им необходимо вводить ограничения на использование в режиме реального времени, чтобы пользователи тарифа «freemium» не могли использовать эту услугу сверх своих лимитов. Задача NortonLifeLock – сделать это надежным и доступным способом.

Компания NortonLifeLock упростила реализацию агрегации на уровне пользователей и устройств, внедрив Apache Flink.

Samsung SmartThings

SmartThings, независимая дочерняя компания Samsung, является одной из ведущих экосистем Интернета вещей в мире, предлагая самые простые решения для создания умного дома.

Компания Samsung SmartThings сталкивалась с такими проблемами, как резервирование ресурсов для отдельных приложений. Это привело к задержкам и снижению производительности при обработке данных. В конечном итоге это повлекло высокие затраты на поддержание рабочих нагрузок в операционной деятельности. Им пришлось создавать новую архитектуру для платформы данных,

и они перешли с Apache Spark на Apache Flink.

BT Group

BT Group — ведущий британский поставщик телекоммуникационных и сетевых услуг и ведущий поставщик глобальных коммуникационных услуг и решений, обслуживающий клиентов в 180 странах. В число основных видов деятельности компании в Великобритании входят предоставление услуг фиксированной голосовой связи, мобильной связи, широкополосного доступа и телевидения (включая спортивные программы), а также ряда продуктов и услуг по конвергентным фиксированным и мобильным сетям для потребителей, бизнеса и государственного сектора.

Компания BT нуждалась в приложении для мониторинга услуг, чтобы поддерживать внедрение технологии Digital Voice – нового потребительского продукта, позволяющего осуществлять голосовые звонки высокой четкости через широкополосную сеть Великобритании.

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

Autodesk

Autodesk, ведущий поставщик программного обеспечения для 3D-проектирования, хочет сделать больше, чем просто создавать и поставлять программное обеспечение. Компания также хочет, чтобы миллионы пользователей по всему миру имели лучший опыт работы с этим программным обеспечением.

Autodesk создает программное обеспечение для тех, кто выпускает вещи. Они обслуживают более 200 миллионов клиентов. Им нужно было устранить разрозненность, чтобы быстрее находить и решать проблемы клиентов. Они нуждались в едином способе сбора и измерения метрик небольшой рабочей группой без увеличения расходов и блокировки данных.

НХЛ

Национальная хоккейная лига — вторая старейшая из четырех основных профессиональных командных спортивных лиг Северной Америки. Сегодня НХЛ состоит из 32 клубов, каждый из которых отражает международный облик Лиги. В командных составах представлены игроки из более чем 20 стран.

Перед НХЛ стоял ряд технических задач, таких как определение необходимых характеристик и методов моделирования для прогнозирования события с большой долей неопределенности, а также определение того, как использовать потоковые данные датчиков PPT для определения места проведения очной ставки, участвующих в ней игроков и вероятности победы каждого игрока в очной ставке, причем все это в течение сотен миллисекунд.

Используя Apache Flink, НХЛ смогла не только предсказать победителя, но и заложить основу для решения ряда аналогичных задач в режиме реального времени и с минимальными затратами.

Poshmark

Poshmark – ведущий рынок социальной коммерции, на котором продают новую и подержанную одежду для женщин, мужчин и детей, а также вещи для домашних животных, дома и многое другое. Их клиенты, которых более 80 миллионов в США, Канаде, Австралии и Индии, формируют будущее шоппинга, чтобы оно было простым, социальным и экологичным.

Рынок Poshmark сосредоточился на достижении роста выручки за счет персонализации и улучшения пользовательского интерфейса. Первоначальный подход к использованию пакетной обработки для персонализации и безопасности не оправдал ожиданий по улучшению качества обслуживания клиентов.

Poshmark разработал персонализацию в реальном времени с использованием дополнения данных в реальном времени с помощью Apache Flink.

Управляемый сервис Amazon для Apache Flink – это полностью управляемое решение для запуска приложений Apache Flink. Управляемый сервис Amazon для Apache Flink упрощает создание приложений Apache Flink, управление ими и интеграцию таких приложений с другими сервисами AWS. При использовании Управляемого сервиса Amazon для Apache Flink не нужно управлять серверами, вносить минимальную плату или оплачивать стоимость установки, поскольку она имеет высокую степень доступности по умолчанию. Состояние приложения полностью управляется и сохраняется в высокопрочной серверной части для обеспечения отказоустойчивости. Приложением можно управлять с помощью простого API, позволяющего останавливать, запускать, настраивать и масштабировать приложение.

Управляемый сервис Amazon для Apache Flink предлагает Apache Flink интерактивный интерфейс блокнота. Используя блокнот Apache Zeppelin, вы можете запускать код SQL, Python и Scala в Apache Flink для разработки и экспериментов, проверки данных или визуализации.

Amazon EMR также поддерживает Apache Flink в качестве приложения YARN, что позволяет управлять ресурсами и запускать другие приложения в кластере.

Apache Flink имеет встроенную поддержку Kubernetes. Вы можете самостоятельно разместить Apache Flink в контейнеризированной среде, например в Эластичном сервисе Amazon Kubernetes (Amazon EKS), или полностью управлять им самостоятельно с помощью Эластичного облака вычислений Amazon (Amazon EC2).

Начните работу с Apache Flink на AWS, создав аккаунт уже сегодня.

AWS: дальнейшие шаги

Зарегистрировать бесплатный аккаунт

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

Регистрация 
Начать разработку в консоли

Начните разработку в Консоли управления AWS.

Вход