Апач Флинк
Разработчик(и) | Фонд программного обеспечения Apache |
---|---|
Первоначальный выпуск | май 2011 г |
Стабильная версия | |
Репозиторий | |
Написано в | Ява и Скала |
Операционная система | Кросс-платформенный |
Тип |
|
Лицензия | Лицензия Апач 2.0 |
Веб-сайт | значительный |
Apache Flink — это с открытым исходным кодом унифицированная потоковой и пакетной обработки платформа , разработанная Apache Software Foundation . Ядро Apache Flink — это механизм распределенной потоковой передачи данных, написанный на Java и Scala . [3] [4] Flink выполняет произвольные потока данных программы параллельным данным и конвейерным (следовательно, параллельным задачам ) способом. [5] Конвейерная система выполнения Flink позволяет выполнять программы пакетной и потоковой обработки. [6] [7] Более того, среда выполнения Flink изначально поддерживает выполнение итеративных алгоритмов . [8]
Flink предоставляет механизм потоковой передачи с высокой пропускной способностью и малой задержкой. [9] а также поддержка обработки событий и управления состоянием. Приложения Flink отказоустойчивы в случае сбоя машины и поддерживают семантику «точно один раз». [10] Программы можно писать на Java , Scala , [11] Питон , [12] и SQL [13] и автоматически компилируются и оптимизируются [14] в программы потоков данных, которые выполняются в кластерной или облачной среде. [15]
Flink не предоставляет собственную систему хранения данных, но предоставляет соединители источников и приемников данных для таких систем, как Apache Doris, Amazon Kinesis , Apache Kafka , HDFS , Apache Cassandra и ElasticSearch . [16]
Разработка
[ редактировать ]Apache Flink разработан по лицензии Apache 2.0. [17] сообществом Apache Flink в рамках Apache Software Foundation . Проектом управляют более 25 коммиттеров и более 340 участников.
Обзор
[ редактировать ]Apache Flink Модель программирования потоков данных обеспечивает поочередную обработку как конечных, так и бесконечных наборов данных. На базовом уровне программы Flink состоят из потоков и преобразований. «Концептуально поток — это (потенциально бесконечный) поток записей данных, а преобразование — это операция, которая принимает один или несколько потоков в качестве входных данных и в результате создает один или несколько выходных потоков». [18]
Apache Flink включает в себя два основных API: API DataStream для ограниченных или неограниченных потоков данных и API DataSet для ограниченных наборов данных. Flink также предлагает Table API, который представляет собой SQL-подобный язык выражений для реляционной потоковой и пакетной обработки, который можно легко встроить в API-интерфейсы Flink DataStream и DataSet. Языком самого высокого уровня, поддерживаемым Flink, является SQL, который семантически похож на Table API и представляет программы в виде выражений запросов SQL.
Модель программирования и распределенная среда выполнения
[ редактировать ]При выполнении программы Flink сопоставляются с потоковыми потоками данных . [18] Каждый поток данных Flink начинается с одного или нескольких источников (вход данных, например, очередь сообщений или файловая система) и заканчивается одним или несколькими приемниками (выходные данные, например, очередь сообщений, файловая система или база данных). В потоке может быть выполнено произвольное количество преобразований. Эти потоки могут быть организованы в виде направленного ациклического графа потоков данных, что позволяет приложению разветвлять и объединять потоки данных.
Flink предлагает готовые соединители источников и приемников с Apache Kafka , Amazon Kinesis, [19] HDFS , Apache Cassandra и другие. [16]
Программы Flink работают как распределенная система внутри кластера и могут быть развернуты в автономном режиме, а также в установках на основе YARN, Mesos, Docker и других платформах управления ресурсами. [20]
Состояние: контрольные точки, точки сохранения и отказоустойчивость
[ редактировать ]Apache Flink включает облегченный механизм отказоустойчивости, основанный на распределенных контрольных точках. [10] Контрольная точка — это автоматический асинхронный снимок состояния приложения и положения в исходном потоке. В случае сбоя программа Flink с включенной контрольной точкой после восстановления возобновит обработку с последней завершенной контрольной точки, гарантируя, что Flink поддерживает семантику состояния ровно один раз в приложении. Механизм контрольных точек предоставляет возможность коду приложения включать внешние системы в механизм контрольных точек (например, открытие и фиксацию транзакций с системой базы данных).
Flink также включает в себя механизм, называемый точками сохранения, которые представляют собой контрольные точки, запускаемые вручную. [21] Пользователь может создать точку сохранения, остановить работающую программу Flink, а затем возобновить работу программы из того же состояния приложения и той же позиции в потоке. Точки сохранения позволяют обновлять программу Flink или кластер Flink без потери состояния приложения. Начиная с Flink 1.2, точки сохранения также позволяют перезапустить приложение с другим параллелизмом, что позволяет пользователям адаптироваться к изменяющимся рабочим нагрузкам.
API потока данных
[ редактировать ]API DataStream компании Flink позволяет выполнять преобразования (например, фильтры, агрегации, оконные функции) в ограниченных или неограниченных потоках данных. API DataStream включает более 20 различных типов преобразований и доступен на Java и Scala. [22]
Простым примером программы потоковой обработки с сохранением состояния является приложение, которое генерирует количество слов из непрерывного входного потока и группирует данные в 5-секундные окна:
import org.apache.flink.streaming.api.scala._
import org.apache.flink.streaming.api.windowing.time.Time
case class WordCount(word: String, count: Int)
object 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 «предлагает расширенную унифицированную модель программирования, позволяющую (разработчику) реализовывать задания пакетной и потоковой обработки данных, которые могут выполняться на любом механизме выполнения». [23] Раннер Apache Flink-on-Beam является наиболее многофункциональным согласно матрице возможностей, поддерживаемой сообществом Beam. [24]
data Artisans совместно с сообществом Apache Flink тесно сотрудничали с сообществом Beam для разработки бегуна Flink. [25]
API набора данных
[ редактировать ]API DataSet компании Flink позволяет выполнять преобразования (например, фильтры, сопоставление, объединение, группировку) ограниченных наборов данных. API DataSet включает более 20 различных типов преобразований. [26] API доступен на Java, Scala и экспериментальном API Python. API DataSet компании Flink концептуально аналогичен API DataStream.
Табличный API и SQL
[ редактировать ]API таблиц Flink — это SQL-подобный язык выражений для реляционной потоковой и пакетной обработки, который можно встроить в API-интерфейсы Flink Java и Scala DataSet и DataStream. API таблиц и интерфейс SQL работают на реляционной абстракции таблицы. Таблицы можно создавать из внешних источников данных или из существующих потоков данных и наборов данных. API таблиц поддерживает реляционные операторы, такие как выбор, агрегирование и объединение таблиц.
Таблицы также можно запрашивать с помощью обычного SQL. API таблиц и SQL предлагают эквивалентную функциональность и могут использоваться совместно в одной программе. Когда таблица преобразуется обратно в DataSet или DataStream, логический план, который был определен реляционными операторами и запросами SQL, оптимизируется с помощью Apache Calcite и преобразуется в программу DataSet или DataStream. [27]
Мигать вперед
[ редактировать ]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 и другие темы, касающиеся потоковой обработки и аналитики в реальном времени. [28]
История
[ редактировать ]В 2010 году исследовательский проект «Стратосфера: управление информацией в облаке». [29] под руководством Фолькера Маркла (финансируется Немецким исследовательским фондом (DFG) ) [30] был начат как сотрудничество Технического университета Берлина , Университета Гумбольдта в Берлине и Института Хассо-Платтнера в Потсдаме. Flink начинался с ответвления механизма распределенного выполнения StratSphere и в марте 2014 года стал проектом Apache Incubator. [31] В декабре 2014 года Flink был принят в качестве проекта верхнего уровня Apache. [32] [33] [34] [35]
Версия | Исходная дата выпуска | Последняя версия | Дата выпуска | |
---|---|---|---|---|
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.3 | 2021-01-29 | |
1.11. | 2020-07-06 | 1.11.6 | 2021-12-16 | |
1.12. | 2020-12-10 | 1.12.7 | 2021-12-16 | |
1.13. | 2021-05-03 | 1.13.6 | 2022-02-18 | |
1.14. | 2021-09-29 | 1.14.6 | 2022-09-28 | |
1.15. | 2022-05-05 | 1.15.4 | 2023-03-15 | |
1.16. | 2022-10-28 | 1.16.3 | 2023-11-29 | |
1.17. | 2023-03-23 | 1.17.2 | 2023-11-29 | |
1.18. | 2023-10-24 | 1.18.0 | 2023-10-24 | |
1.19. | 2024-03-18 | 1.19.0 | 2024-03-18 | |
Легенда: Старая версия Старая версия, все еще поддерживается Последняя версия |
Даты выпуска
- 03/2024: Apache Flink 1.19
- 10/2023: Apache Flink 1.18 (01/2024: v1.18.1)
- 03.2023: Apache Flink 1.17 (05.2023: v1.17.1; 11.2023: v1.17.2)
- 10/2022: Apache Flink 1.16 (01/2023: v1.16.1; 05/2023: v1.16.2; 11/2023: v1.16.3)
- 05.2022: Apache Flink 1.15 (07.2022: v1.15.1; 08.2022: v1.15.2; 11.2022: v1.15.3; 03.2023: v1.15.4)
- 09.2021: Apache Flink 1.14 (12.2021: v1.14.2; 01.2022: v1.14.3; 03.2022: v1.14.4; 06.2022: v1.14.5; 09.2022: v1.14.6)
- 05.2021: Apache Flink 1.13 (05.2021: v1.13.1; 08.2021: v1.13.2; 10.2021: v1.13.3; 12.2021: v1.13.5; 02.2022: v1.13.6)
- 12.2020: Apache Flink 1.12 (01.2021: v1.12.1; 03.2021: v1.12.2; 04.2021: v1.12.3; 05.2021: v1.12.4; 08.2021: v1.12.5; 12/ 2021: v1.12.7)
- 07.2020: Apache Flink 1.11 (07.2020: v1.11.1; 09.2020: v1.11.2; 12.2020: v1.11.3; 08.2021: v1.11.4; 12.2021: v1.11.6)
- 02.2020: Apache Flink 1.10 (05.2020: v1.10.1; 08.2020: v1.10.2; 01.2021: v1.10.3)
- 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; 02.2019: v1.6.4)
- 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
Даты выпуска инкубатора 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: Стратосфера 0.5 (06.2014: v0.5.1; 07.2014: v0.5.2)
Даты выпуска Pre-Apache Stratphere
- 01/2014: Стратосфера 0.4 (версия 0.3 пропущена)
- 08/2012: Стратосфера 0.2
- 05.2011: Стратосфера 0.1 (08.2011: v0.1.1)
Выпуски 1.14.1, 1.13.4, 1.12.6, 1.11.5, которые должны были содержать только обновление Log4j до 2.15.0, были пропущены, поскольку CVE- 2021-45046 был обнаружен во время публикации релиза. [36]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «Выпуск 1.19.1» . 14 июня 2024 г. Проверено 20 июня 2024 г.
- ^ «Все стабильные выпуски Flink» . http://flink.apache.org . Фонд программного обеспечения Apache . Проверено 20 декабря 2021 г.
- ^ «Apache Flink: масштабируемая пакетная и потоковая обработка данных» . apache.org .
- ^ «Апач/флинк» . Гитхаб . 29 января 2022 г.
- ^ Александр Александров, Рико Бергманн, Стефан Юэн, Иоганн-Кристоф Фрейтаг, Фабиан Хюске, Арвид Хейзе, Одей Као, Маркус Лейх, Ульф Лезер, Фолькер Маркл , Феликс Науманн, Матиас Петерс, Астрид Райнлендер, Маттиас Дж. Сакс, Себастьян Шельтер, Марайке Хёгер, Костас Цумас и Даниэль Варнеке. 2014. Платформа Stratphere для анализа больших данных . Журнал ВЛДБ 23, 6 (декабрь 2014 г.), 939–964. DOI
- ^ Ян Пойнтер (7 мая 2015 г.). «Apache Flink: новый претендент на Hadoop сражается со Spark» . Инфомир .
- ^ «Об Apache Flink. Интервью с Фолькером Марклом» . odbms.org .
- ^ Стефан Юэн, Костас Цумас, Мориц Кауфманн и Фолькер Маркл . 2012. Вращающиеся быстрые итеративные потоки данных . Учеб. ВЛДБ Эндоу. 5, 11 (июль 2012 г.), 1268–1279. DOI
- ^ «Сравнительный анализ потоковых вычислительных систем в Yahoo!» . Yahoo Инжиниринг . Проверено 23 февраля 2017 г.
- ^ Jump up to: а б Карбоне, Париж; Фора, Дьюла; Юэн, Стефан; Хариди, Сейф; Цумас, Костас (29 июня 2015 г.). «Облегченные асинхронные снимки для распределенных потоков данных». arXiv : 1506.08603 [ cs.DC ].
- ^ «Документация Apache Flink 1.2.0: Руководство по программированию API Flink DataStream» . ci.apache.org . Проверено 23 февраля 2017 г.
- ^ «Документация Apache Flink 1.2.0: Руководство по программированию на Python» . ci.apache.org . Проверено 23 февраля 2017 г.
- ^ «Документация Apache Flink 1.2.0: таблицы и SQL» . ci.apache.org . Проверено 23 февраля 2017 г.
- ^ Фабиан Хюске, Матиас Петерс, Матиас Дж. Сакс, Астрид Райнлендер, Рико Бергманн, Алеша Креттек и Костас Цумас. 2012. Открытие черных ящиков в оптимизации потоков данных . Учеб. ВЛДБ Эндоу. 5, 11 (июль 2012 г.), 1256–1267. DOI
- ^ Дэниел Варнеке и Одей Као. 2009. Nephele: эффективная параллельная обработка данных в облаке . В материалах 2-го семинара по многозадачным вычислениям на сетях и суперкомпьютерах (MTAGS '09). ACM, Нью-Йорк, Нью-Йорк, США, Статья 8, 10 страниц. DOI
- ^ Jump up to: а б «Документация Apache Flink 1.2.0: соединители потоковой передачи» . ci.apache.org . Проверено 23 февраля 2017 г.
- ^ «ASF Git Repos — flink.git/blob — ЛИЦЕНЗИЯ» . apache.org . Архивировано из оригинала 23 октября 2017 г. Проверено 12 апреля 2015 г.
- ^ Jump up to: а б «Документация Apache Flink 1.2.0: Модель программирования потока данных» . ci.apache.org . Проверено 23 февраля 2017 г.
- ^ «Kinesis Data Streams: обработка потоковых данных в реальном времени» . 5 января 2022 г.
- ^ «Документация Apache Flink 1.2.0: распределенная среда выполнения» . ci.apache.org . Проверено 24 февраля 2017 г.
- ^ «Документация Apache Flink 1.2.0: Распределенная среда выполнения — точки сохранения» . ci.apache.org . Проверено 24 февраля 2017 г.
- ^ «Документация Apache Flink 1.2.0: Руководство по программированию API Flink DataStream» . ci.apache.org . Проверено 24 февраля 2017 г.
- ^ «Апачский луч» . www.beam.apache.org . Проверено 24 февраля 2017 г.
- ^ «Матрица возможностей Apache Beam» . www.beam.apache.org . Проверено 24 февраля 2017 г.
- ^ «Почему Apache Beam? Взгляд Google | Блог Google Cloud по большим данным и машинному обучению | Облачная платформа Google» . Облачная платформа Google . Архивировано из оригинала 25 февраля 2017 г. Проверено 24 февраля 2017 г.
- ^ «Документация Apache Flink 1.2.0: Руководство по программированию API Flink DataSet» . ci.apache.org . Проверено 24 февраля 2017 г.
- ^ «Потоковая обработка для всех с помощью SQL и Apache Flink» . http://flink.apache.org . 24 мая 2016 года . Проверено 8 января 2020 г.
- ^ «Виртуальная конференция Flink Forward 2020» .
- ^ «Стратосфера» . Stratosphere.eu .
- ^ «Стратосфера — управление информацией в облаке» . Немецкий исследовательский фонд (DFG) . Проверено 1 декабря 2023 г.
- ^ «Стратосфера» . apache.org .
- ^ «Подробности проекта Apache Flink» . apache.org .
- ^ «Apache Software Foundation объявляет Apache™ Flink™ проектом высшего уровня: блог Apache Software Foundation» . apache.org . 12 января 2015 г.
- ^ «Найдет ли таинственный Apache Flink свое место на предприятии?» . www.siliconangle.com . 9 февраля 2015 г.
- ^ (на немецком языке)
- ^ «Аварийные выпуски Apache Flink Log4j» . http://flink.apache.org . Фонд программного обеспечения Apache. 16 декабря 2021 г. Проверено 22 декабря 2021 г.