Apache Flink

редактировать
Apache Flink
Apache Flink Logo
Разработчик (и) Apache Software Foundation
Первоначальный выпускМай 2011; 9 лет назад (2011-05)
Стабильный выпуск 1.11.0 / 6 июля 2020 г.; 3 месяца назад (2020-07-06)
Репозиторий Репозиторий Flink
Написан наJava и Scala
Операционная система Кросс-платформенная
Тип
Лицензия Лицензия Apache 2.0
Веб-сайтflink.apache.org

Apache Flink - это платформа с открытым исходным кодом, унифицированная потоковая обработка и пакетная обработка фреймворк, разработанный Apache Software Foundation. Ядро Apache Flink - это механизм распределенного потока данных, написанный на Java и Scala. Flink выполняет произвольные программы потока данных в режиме с параллельными данными и конвейерными (отсюда параллельными задачами ). Конвейерная система времени выполнения Flink позволяет выполнять пакетную / пакетную и потоковую обработку программ. Кроме того, среда выполнения Flink изначально поддерживает выполнение итерационных алгоритмов.

Flink обеспечивает высокопроизводительный механизм потоковой передачи с малой задержкой, а также поддержку обработки во время событий и управления состоянием. Приложения Flink отказоустойчивы в случае отказа машины и поддерживают семантику «ровно один раз». Программы могут быть написаны на Java, Scala, Python и SQL и автоматически компилируются и оптимизируются в программы потока данных, которые выполняются в кластер или облачная среда.

Flink не предоставляет собственную систему хранения данных, но предоставляет соединители источников и приемников данных для таких систем, как Amazon Kinesis, Apache Kafka, Alluxio, HDFS, Apache Cassandra и ElasticSearch.

Содержание
  • 1 Разработка
  • 2 Обзор
    • 2.1 Модель программирования и распределенная среда выполнения
    • 2.2 Состояние: контрольные точки, точки сохранения и отказоустойчивость
    • 2.3 DataStream API
      • 2.3.1 Apache Beam - Flink Runner
    • 2.4 DataSet API
    • 2.5 Table API и SQL
  • 3 Flink Forward
  • 4 История
  • 5 См. Также
  • 6 Ссылки
  • 7 Внешние ссылки
Разработка

Apache Flink разработан под лицензией Apache 2.0 сообщества Apache Flink в рамках Apache Software Foundation. Над проектом работают более 25 коммиттеров и более 340 участников.

Ververica (ранее Data Artisans) - компания, основанная первоначальными создателями Apache Flink, в которой работают многие из нынешних коммиттеров Apache Flink.

Обзор

Модель программирования потока данных Apache Flink обеспечивает обработку событий за раз как для конечных, так и для бесконечных наборов данных. На базовом уровне программы Flink состоят из потоков и преобразований. «Концептуально поток - это (потенциально бесконечный) поток записей данных, а преобразование - это операция, которая принимает один или несколько потоков в качестве входных данных и в результате создает один или несколько выходных потоков».

Apache Flink включает два основных API: API DataStream для ограниченных или неограниченных потоков данных и API DataSet для ограниченных наборов данных. Flink также предлагает Table API, который представляет собой SQL-подобный язык выражений для реляционной потоковой и пакетной обработки, который можно легко встроить в DataStream и DataSet API Flink. Самым высокоуровневым языком, поддерживаемым Flink, является SQL, который семантически похож на API таблиц и представляет программы в виде выражений запросов SQL.

Модель программирования и распределенная среда выполнения

После выполнения программы Flink отображаются в потоковые потоки данных. Каждый поток данных Flink начинается с одного или нескольких источников (вход данных, например, очередь сообщений или файловая система) и заканчивается одним или несколькими приемниками (выходными данными, например, очередью сообщений, файловой системой или базой данных). В потоке может быть выполнено произвольное количество преобразований. Эти потоки могут быть организованы как направленный ациклический граф потока данных, что позволяет приложению ветвиться и объединять потоки данных.

Flink предлагает готовые коннекторы источника и приемника с Alluxio, Apache Kafka, Amazon Kinesis, HDFS, Apache Cassandra и др.

Программы Flink работают как распределенная система в кластере и могут быть развернуты в автономном режиме, а также на YARN, Mesos, установках на основе Docker вместе с другими структурами управления ресурсами.

Состояние: контрольные точки, точки сохранения и отказоустойчивость

Apache Flink включает легкий механизм отказоустойчивости, основанный на распределенных контрольных точках. Контрольная точка - это автоматический асинхронный снимок состояния приложения и позиции в исходном потоке. В случае сбоя программа Flink с включенной контрольной точкой после восстановления возобновит обработку с последней завершенной контрольной точки, гарантируя, что Flink поддерживает семантику состояния ровно один раз в приложении. Механизм контрольных точек предоставляет возможности для кода приложения, чтобы также включать внешние системы в механизм контрольных точек (например, открытие и фиксация транзакций с системой базы данных).

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

DataStream API

DataStream API Flink позволяет выполнять преобразования (например, фильтры, агрегаты, оконные функции) в ограниченных или неограниченных потоках данных. API DataStream включает более 20 различных типов преобразований и доступен в Java и Scala.

Простым примером программы обработки потока с отслеживанием состояния является приложение, которое генерирует счетчик слов из непрерывного входного потока и группирует данные в 5-секундных окнах:

import org.apache.flink.streaming.api.scala._ import org.apache.flink.streaming.api.windowing.time.Time case class WordCount (word: String, count: Int) объект WindowWordCount {def main (args: Array [String]) {val env = StreamExecutionEnvironment.getExecutionEnvironment val text = env.socketTextStream ("localhost", 9999) val counts = text.flatMap {_.toLowerCase.split ("\ \ W + ") filter {_.nonEmpty}}.map {WordCount (_, 1)}.keyBy (" word ").timeWindow (Time.seconds (5)).sum (" count ") counts.print env. execute ("Window Stream WordCount")}}

Apache Beam - Flink Runner

Apache Beam «предоставляет расширенную унифицированную модель программирования, позволяющую (разработчику) реализовать обработку пакетных и потоковых данных ssing заданий, которые могут выполняться на любом механизме выполнения ». Средство выполнения Apache Flink-on-Beam является наиболее многофункциональным в соответствии с матрицей возможностей, поддерживаемой сообществом Beam.

Data Artisans вместе с сообществом Apache Flink тесно сотрудничали с сообществом Beam для разработки бегун Flink.

API DataSet

API DataSet Flink позволяет преобразования (например, фильтры, сопоставление, объединение, группирование) в ограниченных наборах данных. DataSet API включает более 20 различных типов преобразований. API доступен на Java, Scala и экспериментальном Python API. API Flink DataSet концептуально аналогичен API DataStream.

Table API и SQL

Table API Flink - это SQL-подобный язык выражений для реляционной потоковой и пакетной обработки, который может быть встроен в Flink's Java и Scala DataSet и DataStream API. API таблиц и интерфейс SQL работают с реляционной абстракцией таблиц. Таблицы могут быть созданы из внешних источников данных или из существующих DataStreams и DataSet. API таблиц поддерживает реляционные операторы, такие как выбор, агрегирование и объединение в таблицах.

Таблицы также можно запрашивать с помощью обычного SQL. Table API и SQL предлагают эквивалентную функциональность и могут быть смешаны в одной программе. Когда таблица преобразуется обратно в DataSet или DataStream, логический план, который был определен реляционными операторами и запросами SQL, оптимизируется с помощью Apache Calcite и преобразуется в программу DataSet или DataStream.

Flink Forward

Flink Forward - это ежегодная конференция, посвященная Apache Flink. Первый выпуск Flink Forward прошел в 2015 году в Берлине. Двухдневная конференция собрала более 250 участников из 16 стран. Сессии были организованы в два трека с более чем 30 техническими презентациями от разработчиков Flink и одним дополнительным треком с практическим обучением Flink.

В 2016 году к конференции присоединилось 350 участников, и более 40 докладчиков представили технические доклады в 3 параллельных направлениях. На третий день участников пригласили принять участие в практических занятиях.

В 2017 году мероприятие также расширится до Сан-Франциско. День конференции посвящен техническим переговорам о том, как Flink используется на предприятии, внутреннем устройстве системы Flink, интеграции экосистемы с Flink и будущем платформы. В нем представлены основные доклады, выступления пользователей Flink в промышленности и академических кругах, а также практические занятия по Apache Flink.

В 2020 году, после пандемии COVID-19, весеннее издание Flink Forward, которое должно было проходить в Сан-Франциско, было отменено. Вместо этого конференция проходила виртуально, начиная с 22 по 24 апреля, и на ней обсуждались основные доклады в реальном времени, примеры использования Flink, внутреннее устройство Apache Flink® и другие темы по потоковой обработке и аналитике в реальном времени.

Спикеры от следующих организаций, представленных на конференциях Flink Forward: Alibaba, Amadeus, Bouygues Telecom, Capital One, Cloudera, Data Artisans, Deep.BI, EMC, Ericsson, Eventador, Hortonworks, Huawei, IBM, Google, MapR, MongoDB, Netflix, New Relic, Otto Group, Red Hat, ResearchGate, Uber и Zalando.

History

В 2010 году исследовательский проект «Стратосфера: управление информацией в облаке» (финансируемый Немецким исследовательским фондом (DFG) ) был начат в сотрудничестве с Техническим университетом Берлина, Университет Гумбольдта в Берлине и Hasso-Plattner-Institut Потсдам. Flink начался с форка механизма распределенного выполнения Stratosphere и в марте 2014 года стал проектом Apache Incubator. В декабре 2014 года Flink был принят как проект верхнего уровня Apache.

ВерсияИсходная дата выпускаПоследняя версияДата выпуска
Старая версия, больше не поддерживается: 0.924.06.20150.9.101.09.2015
Старая версия, больше не поддерживается: 0.102015-11-160.10.22016-02-11
Старая версия, больше не поддерживается: 1.02016-03-081.0.32016-05-11
Старая версия, больше не поддерживается: 1.12016-08-081.1.52017-03-22
Старая версия, больше не поддерживается: 1.206.02.20171.2.126.04.2017
Старая версия, больше не поддерживается: 1.32017- 06-011.3.315.03.2018
Старая версия, больше не поддерживается: 1.42017-12-121.4.22018-03-08
Старая версия, больше не поддерживается: 1.52018-05-251.5.62018-12-26
Старая версия, больше не поддерживается: 1.62018-08-081.6.32018-12-22
Старая версия, больше не поддерживается: 1.72018-11-301.7.22019-02-15
Старая версия, больше не поддерживается: 1.82019-04-091.8.311.12.2019
Старая версия, но все еще поддерживается: 1.92019-08-221.9.22020-01 -30
Текущая стабильная версия: 1.102020-02-111.10.02020-02-11

Даты выпуска

  • 02 / 2020: Apache Flink 1.10 (02/2020: v1.10.0)
  • 08/2019: Apache Flink 1.9 (10/2019: v1.9.1; 01/2020: v1.9.2)
  • 04/2019: Apache Flink 1.8 (07/2019: v1.8.1; 09/2019: v1.8.2; 12/2019: v1.8.3)
  • 11/2018: Apache Flink 1.7 (12/2018: v1.7.1; 02/2019: v1.7.2)
  • 08/2018: Apache Flink 1.6 (09/2018: v1.6.1; 10 / 2018: v1.6.2; 12/2018: v1.6.3)
  • 05/2018: Apache Flink 1.5 (07/2018: v1.5.1; 07/2018: v1.5.2; 08/2018: v1. 5.3; 09/2018: v1.5.4; 10/2018: v1.5.5; 12/2018: v1.5.6)
  • 12/2017: Apache Flink 1.4 (02/2018: v1.4.1; 03 / 2018: v1.4.2)
  • 06/2017: Apache Flink 1.3 (06/2017: v1.3.1; 08/2017: v1.3.2; 03/2018: v1.3.3)
  • 02/2017: Apache Flink 1.2 (04/2017: v1.2.1)
  • 08/2016: Apache Flink 1.1 (08/2016: v1.1.1; 09/2016: v1.1.2; 10/2016: v1.1.3; 12/2016: v1.1.4; 03/2017: v1.1.5)
  • 03/2016: Apache Flink 1.0 (04/2016: v1.0.1; 04/2016: v1.0.2; 05/2016: v1.0.3)
  • 11/2015: Apache Flink 0.10 (11/2015: v0.10.1; 02/2016: v0.10.2)
  • 06/2015: Apache Flink 0.9 (09/2015: v0.9.1)
    • 04/2015: Apache Flink 0.9-milestone-1

Apach Даты выпуска инкубатора

  • 01/2015: инкубация Apache Flink 0.8
  • 11/2014: инкубация Apache Flink 0.7
  • 08/2014: инкубация Apache Flink 0.6 (09/2014 : v0.6.1-инкубация)
  • 05/2014: Stratosphere 0.5 (06/2014: v0.5.1; 07/2014: v0.5.2)

Даты выхода Pre-Apache Stratosphere

  • 01/2014: Stratosphere 0.4 (версия 0.3 была пропущена)
  • 08/2012: Stratosphere 0.2
  • 05/2011: Stratosphere 0.1 (08/2011: v0.1.1)
См. Также
Ссылки
Внешние ссылки
Последняя правка сделана 2021-06-11 20:10:27
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте