Разработчик (и) | 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.
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 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 «предоставляет расширенную унифицированную модель программирования, позволяющую (разработчику) реализовать обработку пакетных и потоковых данных ssing заданий, которые могут выполняться на любом механизме выполнения ». Средство выполнения Apache Flink-on-Beam является наиболее многофункциональным в соответствии с матрицей возможностей, поддерживаемой сообществом Beam.
Data Artisans вместе с сообществом Apache Flink тесно сотрудничали с сообществом Beam для разработки бегун Flink.
API DataSet Flink позволяет преобразования (например, фильтры, сопоставление, объединение, группирование) в ограниченных наборах данных. DataSet API включает более 20 различных типов преобразований. API доступен на Java, Scala и экспериментальном Python API. API Flink DataSet концептуально аналогичен API DataStream.
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 - это ежегодная конференция, посвященная 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.
В 2010 году исследовательский проект «Стратосфера: управление информацией в облаке» (финансируемый Немецким исследовательским фондом (DFG) ) был начат в сотрудничестве с Техническим университетом Берлина, Университет Гумбольдта в Берлине и Hasso-Plattner-Institut Потсдам. Flink начался с форка механизма распределенного выполнения Stratosphere и в марте 2014 года стал проектом Apache Incubator. В декабре 2014 года Flink был принят как проект верхнего уровня Apache.
Версия | Исходная дата выпуска | Последняя версия | Дата выпуска |
---|---|---|---|
Старая версия, больше не поддерживается: 0.9 | 24.06.2015 | 0.9.1 | 01.09.2015 |
Старая версия, больше не поддерживается: 0.10 | 2015-11-16 | 0.10.2 | 2016-02-11 |
Старая версия, больше не поддерживается: 1.0 | 2016-03-08 | 1.0.3 | 2016-05-11 |
Старая версия, больше не поддерживается: 1.1 | 2016-08-08 | 1.1.5 | 2017-03-22 |
Старая версия, больше не поддерживается: 1.2 | 06.02.2017 | 1.2.1 | 26.04.2017 |
Старая версия, больше не поддерживается: 1.3 | 2017- 06-01 | 1.3.3 | 15.03.2018 |
Старая версия, больше не поддерживается: 1.4 | 2017-12-12 | 1.4.2 | 2018-03-08 |
Старая версия, больше не поддерживается: 1.5 | 2018-05-25 | 1.5.6 | 2018-12-26 |
Старая версия, больше не поддерживается: 1.6 | 2018-08-08 | 1.6.3 | 2018-12-22 |
Старая версия, больше не поддерживается: 1.7 | 2018-11-30 | 1.7.2 | 2019-02-15 |
Старая версия, больше не поддерживается: 1.8 | 2019-04-09 | 1.8.3 | 11.12.2019 |
Старая версия, но все еще поддерживается: 1.9 | 2019-08-22 | 1.9.2 | 2020-01 -30 |
Текущая стабильная версия: 1.10 | 2020-02-11 | 1.10.0 | 2020-02-11 |
Даты выпуска
Apach Даты выпуска инкубатора
Даты выхода Pre-Apache Stratosphere