Apache Flink - Apache Flink
Разработчики) | Фонд программного обеспечения Apache |
---|---|
изначальный выпуск | Май 2011 г. |
Стабильный выпуск | 1.11.0 / 6 июля 2020 г. |
Репозиторий | Репозиторий Flink |
Написано в | Ява и Scala |
Операционная система | Кроссплатформенность |
Тип |
|
Лицензия | Лицензия Apache 2.0 |
Интернет сайт | мигать |
Apache Flink является Открытый исходный код, унифицированный потоковая обработка и пакетная обработка рамки разработан Фонд программного обеспечения Apache. Ядро Apache Flink - это движок распределенной потоковой передачи данных, написанный на Ява и Scala.[1][2] Flink выполняет произвольное поток данных программы в параллельные данные и конвейерный (следовательно параллельная задача ) образом.[3] Конвейерная система времени выполнения Flink позволяет выполнять оптом / партия и программы потоковой обработки.[4][5] Кроме того, среда выполнения Flink поддерживает выполнение итерационные алгоритмы изначально.[6]
Flink предоставляет движок потоковой передачи с высокой пропускной способностью и малой задержкой.[7] а также поддержка обработки времени событий и управления состоянием. Приложения Flink отказоустойчивы в случае отказа машины и поддерживают семантику «ровно один раз».[8] Программы можно писать на Ява, Scala,[9] Python,[10] и SQL[11] и автоматически компилируются и оптимизируются[12] в программы потока данных, которые выполняются в кластере или облачной среде.[13]
Flink не предоставляет свою собственную систему хранения данных, но предоставляет соединители источников и приемников данных для таких систем, как Amazon Kinesis, Апач Кафка, Alluxio, HDFS, Apache Cassandra, и ElasticSearch.[14]
Разработка
Apache Flink разработан под Лицензия Apache 2.0[15] сообществом Apache Flink в рамках Фонд программного обеспечения Apache. В проекте участвуют более 25 коммиттеров и более 340 участников.
Ververica (ранее Data Artisans), компания, основанная первыми создателями Apache Flink,[16] использует многие из текущих коммиттеров Apache Flink.[17]
Обзор
Apache Flink's модель программирования потока данных обеспечивает одновременную обработку как конечных, так и бесконечных наборов данных. На базовом уровне программы Flink состоят из потоков и преобразований. «Концептуально поток - это (потенциально бесконечный) поток записей данных, а преобразование - это операция, которая принимает один или несколько потоков в качестве входных данных и в результате создает один или несколько выходных потоков».[18]
Apache Flink включает два основных API: API DataStream для ограниченных или неограниченных потоков данных и API DataSet для ограниченных наборов данных. Flink также предлагает Table API, который представляет собой SQL-подобный язык выражений для реляционной потоковой и пакетной обработки, который можно легко встроить в DataStream и DataSet API Flink. Самым высокоуровневым языком, поддерживаемым Flink, является SQL, который семантически похож на API таблиц и представляет программы в виде выражений запросов SQL.
Модель программирования и распределенная среда выполнения
После выполнения программы Flink отображаются в потоковую передачу. потоки данных.[18] Каждый поток данных Flink начинается с одного или нескольких источников (вход данных, например, очередь сообщений или файловая система) и заканчивается одним или несколькими приемниками (выходными данными, например, очередью сообщений, файловой системой или базой данных). В потоке может быть выполнено произвольное количество преобразований. Эти потоки могут быть организованы как направленный ациклический граф потока данных, что позволяет приложению ветвиться и объединять потоки данных.
Flink предлагает готовые разъемы источника и приемника с Alluxio, Апач Кафка, Amazon Kinesis, HDFS, Apache Cassandra, и больше.[14]
Программы Flink работают как распределенная система в кластере и могут быть развернуты в автономном режиме, а также в YARN, Mesos, установках на основе Docker вместе с другими структурами управления ресурсами.[19]
Состояние: контрольные точки, точки сохранения и отказоустойчивость
Apache Flink включает легкий механизм отказоустойчивости, основанный на распределенных контрольных точках.[8] Контрольная точка - это автоматический асинхронный снимок состояния приложения и позиции в исходном потоке. В случае сбоя программа Flink с включенной контрольной точкой после восстановления возобновит обработку с последней завершенной контрольной точки, гарантируя, что Flink поддерживает семантику состояния ровно один раз в приложении. Механизм контрольных точек предоставляет возможности для кода приложения, чтобы также включать внешние системы в механизм контрольных точек (например, открытие и фиксация транзакций с системой базы данных).
Flink также включает механизм, называемый точками сохранения, которые запускаются вручную.[20] Пользователь может сгенерировать точку сохранения, остановить работающую программу Flink, а затем возобновить программу с того же состояния приложения и позиции в потоке. Точки сохранения позволяют обновлять программу Flink или кластер Flink без потери состояния приложения. Начиная с Flink 1.2, точки сохранения также позволяют перезапускать приложение с другим параллелизмом, что позволяет пользователям адаптироваться к изменяющимся рабочим нагрузкам.
DataStream API
API Flink DataStream позволяет выполнять преобразования (например, фильтры, агрегаты, оконные функции) в ограниченных или неограниченных потоках данных. DataStream API включает более 20 различных типов преобразований и доступен на Java и Scala.[21]
Простым примером программы обработки потока с отслеживанием состояния является приложение, которое выдает счетчик слов из непрерывного входного потока и группирует данные в 5-секундных окнах:
импорт org.apache.flink.streaming.api.scala._импорт org.apache.flink.streaming.api.windowing.time.Timeдело учебный класс WordCount(слово: Нить, считать: Int)объект WindowWordCount { def главный(аргументы: Множество[Нить]) { вал env = StreamExecutionEnvironment.getExecutionEnvironment вал текст = env.socketTextStream("localhost", 9999) вал считает = текст.flatMap { _.toLowerCase.расколоть(" W +") фильтр { _.непустой } } .карта { WordCount(_, 1) } .keyBy("слово") .timeWindow(Время.секунды(5)) .сумма("считать") считает.Распечатать env.выполнять("Window Stream WordCount") }}
Apache Beam - Флинк-бегун
Apache Beam «Предоставляет расширенную унифицированную модель программирования, позволяющую (разработчику) реализовывать задания пакетной и потоковой обработки данных, которые могут выполняться на любом механизме выполнения».[22] Средство выполнения Apache Flink-on-Beam является наиболее многофункциональным согласно матрице возможностей, поддерживаемой сообществом Beam.[23]
Data Artisans совместно с сообществом Apache Flink тесно сотрудничали с сообществом Beam для разработки бегуна Flink.[24]
DataSet API
API DataSet от Flink позволяет выполнять преобразования (например, фильтры, сопоставление, объединение, группирование) в ограниченных наборах данных. DataSet API включает более 20 различных типов преобразований.[25] API доступен на Java, Scala и экспериментальном Python API. API Flink DataSet концептуально аналогичен API DataStream.
Табличный API и SQL
API таблиц Flink - это похожий на SQL язык выражений для реляционной потоковой и пакетной обработки, который может быть встроен в API-интерфейсы Flink Java и Scala DataSet и DataStream. API таблиц и интерфейс SQL работают с реляционной абстракцией таблиц. Таблицы могут быть созданы из внешних источников данных или из существующих DataStreams и DataSet. API таблиц поддерживает реляционные операторы, такие как выбор, агрегирование и объединение в таблицах.
Таблицы также можно запрашивать с помощью обычного SQL. Table API и SQL предлагают эквивалентную функциональность и могут быть смешаны в одной программе. Когда таблица преобразуется обратно в DataSet или DataStream, логический план, который был определен реляционными операторами и запросами SQL, оптимизируется с помощью Apache Calcite и преобразуется в программу DataSet или DataStream.[26]
Флинк вперед
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 и другие темы по потоковой обработке и аналитике в реальном времени.[27]
История
В 2010 году был проведен исследовательский проект «Стратосфера: управление информацией в облаке».[28] (финансируется Немецкий исследовательский фонд (DFG)[29]) был начат как сотрудничество Технический университет Берлина, Humboldt-Universität zu Berlin, и Hasso-Plattner-Institut Потсдам. Flink начался с форка механизма распределенного выполнения Stratosphere и стал Инкубатор Apache проект в марте 2014 года.[30] В декабре 2014 года Flink был принят в качестве проекта верхнего уровня Apache.[31][32][33][34]
Версия | Исходная дата выпуска | Последняя версия | Дата выхода |
---|---|---|---|
0.9 | 2015-06-24 | 0.9.1 | 2015-09-01 |
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 | 2017-02-06 | 1.2.1 | 2017-04-26 |
1.3 | 2017-06-01 | 1.3.3 | 2018-03-15 |
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 | 2019-12-11 |
1.9 | 2019-08-22 | 1.9.2 | 2020-01-30 |
1.10 | 2020-02-11 | 1.10.0 | 2020-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-веха-1
Даты выпуска инкубатора Apache
- 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: Стратосфера 0.2
- 05/2011: Stratosphere 0.1 (08/2011: v0.1.1)
Смотрите также
Рекомендации
- ^ «Apache Flink: масштабируемая пакетная и потоковая обработка данных». apache.org.
- ^ "apache / flink". GitHub.
- ^ Александр Александров, Рико Бергманн, Стефан Эвен, Иоганн-Кристоф Фрейтаг, Фабиан Хуэске, Арвид Хейсе, Одей Као, Маркус Лейх, Ульф Лезер, Фолькер Маркл, Феликс Науман, Матиас Петерс, Астрид Райнлендер, Матиас Дж. Сакс, Себастиан Шеландер Хёгер, Костас Тзумас и Даниэль Варнеке. 2014 г. Платформа Stratosphere для анализа больших данных. Журнал VLDB 23, 6 (декабрь 2014 г.), 939-964. DOI
- ^ Иэн Пойнтер (7 мая 2015 г.). "Apache Flink: новый претендент на Hadoop противостоит Spark". InfoWorld.
- ^ «На Apache Flink. Интервью с Фолькером Маркл». odbms.org.
- ^ Стефан Эвен, Костас Цумас, Мориц Кауфманн и Фолькер Маркл. 2012 г. Вращение быстрых итеративных потоков данных. Proc. VLDB Endow. 5, 11 (июль 2012 г.), 1268-1279. DOI
- ^ «Сравнительный анализ механизмов потоковых вычислений в Yahoo!». Yahoo Engineering. Получено 2017-02-23.
- ^ а б Карбоне, Париж; Фора, Дьюла; Юэн, Стефан; Хариди, Сейф; Тзумас, Костас (2015-06-29). «Легкие асинхронные снимки для распределенных потоков данных». arXiv:1506.08603 [cs.DC ].
- ^ «Документация Apache Flink 1.2.0: Руководство по программированию API Flink DataStream». ci.apache.org. Получено 2017-02-23.
- ^ «Документация Apache Flink 1.2.0: Руководство по программированию на Python». ci.apache.org. Получено 2017-02-23.
- ^ «Документация Apache Flink 1.2.0: таблица и SQL». ci.apache.org. Получено 2017-02-23.
- ^ Фабиан Хуэске, Матиас Петерс, Матиас Дж. Сакс, Астрид Райнландер, Рико Бергманн, Алйоша Креттек и Костас Тзумас. 2012 г. Открытие черных ящиков в оптимизации потока данных. Proc. VLDB Endow. 5, 11 (июль 2012 г.), 1256-1267. DOI
- ^ Даниэль Варнеке и Одей Као. 2009 г. Nephele: эффективная параллельная обработка данных в облаке. В материалах 2-го семинара по многозадачным вычислениям в сетях и суперкомпьютерах (MTAGS '09). ACM, Нью-Йорк, Нью-Йорк, США, статья 8, 10 страниц. DOI
- ^ а б «Документация Apache Flink 1.2.0: соединители потоковой передачи». ci.apache.org. Получено 2017-02-23.
- ^ "ASF Git Repos - flink.git / blob - ЛИЦЕНЗИЯ". apache.org. Архивировано из оригинал на 2017-10-23. Получено 2015-04-12.
- ^ "О - Верверика". ververica.com. Получено 2020-03-18.
- ^ «Apache Flink: информация о сообществе и проекте». flink.apache.org. Получено 2017-02-23.
- ^ а б «Документация Apache Flink 1.2.0: модель программирования потока данных». ci.apache.org. Получено 2017-02-23.
- ^ «Документация Apache Flink 1.2.0: Распределенная среда выполнения». ci.apache.org. Получено 2017-02-24.
- ^ «Документация Apache Flink 1.2.0: Распределенная среда выполнения - точки сохранения». ci.apache.org. Получено 2017-02-24.
- ^ «Документация Apache Flink 1.2.0: Руководство по программированию API Flink DataStream». ci.apache.org. Получено 2017-02-24.
- ^ "Apache Beam". beam.apache.org. Получено 2017-02-24.
- ^ «Матрица возможностей Apache Beam». beam.apache.org. Получено 2017-02-24.
- ^ "Почему Apache Beam? Взгляд Google | Блог Google Cloud по большим данным и машинному обучению | Google Cloud Platform". Облачная платформа Google. Получено 2017-02-24.
- ^ «Документация Apache Flink 1.2.0: Руководство по программированию Flink DataSet API». ci.apache.org. Получено 2017-02-24.
- ^ «Потоковая обработка для всех с SQL и Apache Flink». flink.apache.org. Получено 2020-01-08.
- ^ «Виртуальная конференция Flink Forward 2020».
- ^ "Стратосфера". stratosphere.eu.
- ^ "DFG - Deutsche Forschungsgemeinschaft -". dfg.de.
- ^ "Стратосфера". apache.org.
- ^ «Детали проекта для Apache Flink». apache.org.
- ^ «Apache Software Foundation объявляет Apache ™ Flink ™ проектом высшего уровня: блог Apache Software Foundation». apache.org.
- ^ «Сможет ли таинственный Апач Флинк найти золотую середину на предприятии?». Siliconangle.com.
- ^ (на немецком)