stringtranslate.com

Апач Флинк

Apache Flink — это унифицированная среда потоковой и пакетной обработки с открытым исходным кодом , разработанная Apache Software Foundation . Ядром Apache Flink является распределенный потоковый движок потока данных, написанный на Java и Scala . [3] [4] Flink выполняет произвольные программы потоков данных в параллельной по данным и конвейерной (следовательно, параллельной задачам ) манере. [5] Конвейерная система времени выполнения Flink позволяет выполнять программы пакетной и потоковой обработки. [6] [7] Кроме того, среда выполнения Flink изначально поддерживает выполнение итеративных алгоритмов . [8]

Flink обеспечивает высокопроизводительный потоковый движок с низкой задержкой [9] , а также поддержку обработки событий и управления состоянием. Приложения Flink устойчивы к отказам в случае сбоя машины и поддерживают семантику exact-once. [10] Программы могут быть написаны на Java , Scala , [11] Python , [12] и SQL [13] и автоматически компилируются и оптимизируются [14] в программы потоков данных, которые выполняются в кластерной или облачной среде. [15]

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

Разработка

Apache Flink разработан под лицензией Apache License 2.0 [17] сообществом Apache Flink в рамках Apache Software Foundation . Проект поддерживается более чем 25 коммиттерами и более чем 340 участниками.

Обзор

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

Apache Flink включает два основных API: API DataStream для ограниченных или неограниченных потоков данных и API DataSet для ограниченных наборов данных. Flink также предлагает API таблиц, представляющий собой язык выражений SQL для реляционной потоковой и пакетной обработки, который можно легко встроить в API DataStream и DataSet Flink. Языком самого высокого уровня, поддерживаемым Flink, является SQL, который семантически похож на 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 поддерживает семантику состояния exact-only в приложении. Механизм контрольных точек предоставляет хуки для кода приложения, чтобы также включать внешние системы в механизм контрольных точек (например, открытие и фиксация транзакций с системой базы данных).

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

API-интерфейс DataStream

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

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

импорт org.apache.flink.streaming.api.scala._ импорт org.apache.flink.streaming.api.windowing.time.Time  класс случая WordCount ( слово : Строка , количество : Целое )     объект WindowWordCount { def main ( args : Array [ String ]) {       значение env = StreamExecutionEnvironment . getExecutionEnvironment значение 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 " )                   подсчеты . печать env . execute ( "Окно Поток WordCount" ) } } 

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

Data Artisans совместно с сообществом Apache Flink тесно сотрудничали с сообществом Beam для разработки Flink runner. [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. 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 начинался как ответвление распределенного исполняющего движка Stratosphere и стал проектом Apache Incubator в марте 2014 года . [31] В декабре 2014 года Flink был принят в качестве проекта Apache верхнего уровня. [32] [33] [34] [35]

Даты выпуска

Даты выпуска Apache Incubator

Даты выпуска до Apache Stratosphere

Релизы 1.14.1, 1.13.4, 1.12.6, 1.11.5, которые должны были содержать только обновление Log4j до 2.15.0, были пропущены, поскольку во время публикации релиза была обнаружена уязвимость CVE-2021-45046. [36]

Смотрите также

Ссылки

  1. ^ "Release 1.20.0". 1 августа 2024 г. Получено 20 августа 2024 г.
  2. ^ "Все стабильные выпуски Flink". flink.apache.org . Apache Software Foundation . Получено 2021-12-20 .
  3. ^ "Apache Flink: масштабируемая пакетная и потоковая обработка данных". apache.org .
  4. ^ "apache/flink". Гитхаб . 29 января 2022 г.
  5. ^ Александр Александров, Рико Бергманн, Стефан Юэн, Иоганн-Кристоф Фрейтаг, Фабиан Хюске, Арвид Хейзе, Одей Као, Маркус Лейх, Ульф Лезер, Фолькер Маркл , Феликс Науманн, Матиас Петерс, Астрид Райнлендер, Маттиас Дж. Сакс, Себастьян Шельтер, Марайке Хегер, Костас Цумас и Даниэль Варнеке. 2014. Платформа StratSphere для анализа больших данных . Журнал ВЛДБ 23, 6 (декабрь 2014 г.), 939–964. DOI
  6. Ян Пойнтер (7 мая 2015 г.). «Apache Flink: новый претендент Hadoop соревнуется со Spark». InfoWorld .
  7. ^ "Об Apache Flink. Интервью с Фолькером Марклом". odbms.org .
  8. ^ Стефан Эвен, Костас Цоумас, Мориц Кауфманн и Фолькер Маркл . 2012. Вращение быстрых итеративных потоков данных . Proc. VLDB Endow. 5, 11 (июль 2012), 1268-1279. DOI
  9. ^ "Бенчмаркинг потоковых вычислительных движков в Yahoo!". Yahoo Engineering . Получено 23.02.2017 .
  10. ^ ab Carbone, Paris; Fóra, Gyula; Ewen, Stephan; Haridi, Seif; Tzoumas, Kostas (2015-06-29). "Легкие асинхронные моментальные снимки для распределенных потоков данных". arXiv : 1506.08603 [cs.DC].
  11. ^ «Документация Apache Flink 1.2.0: Руководство по программированию API Flink DataStream» . ci.apache.org . Проверено 23 февраля 2017 г.
  12. ^ "Apache Flink 1.2.0 Documentation: Python Programming Guide". ci.apache.org . Получено 2017-02-23 .
  13. ^ "Документация Apache Flink 1.2.0: таблицы и SQL". ci.apache.org . Получено 23.02.2017 .
  14. ^ Фабиан Хуеске, Матиас Петерс, Маттиас Дж. Сакс, Астрид Райнлендер, Рико Бергманн, Алёша Креттек и Костас Цумас. 2012. Открытие чёрных ящиков в оптимизации потока данных . Proc. VLDB Endow. 5, 11 (июль 2012 г.), 1256-1267. DOI
  15. ^ Дэниел Варнеке и Одей Као. 2009. Nephele: эффективная параллельная обработка данных в облаке . В трудах 2-го семинара по многозадачным вычислениям на сетках и суперкомпьютерах (MTAGS '09). ACM, Нью-Йорк, США, статья 8, 10 страниц. DOI
  16. ^ ab "Apache Flink 1.2.0 Documentation: Streaming Connectors". ci.apache.org . Получено 2017-02-23 .
  17. ^ "ASF Git Repos - flink.git/blob - ЛИЦЕНЗИЯ". apache.org . Архивировано из оригинала 2017-10-23 . Получено 2015-04-12 .
  18. ^ ab "Apache Flink 1.2.0 Documentation: Dataflow Programming Model". ci.apache.org . Получено 2017-02-23 .
  19. ^ «Kinesis Data Streams: обработка потоковых данных в реальном времени». 5 января 2022 г.
  20. ^ "Apache Flink 1.2.0 Documentation: Distributed Runtime Environment". ci.apache.org . Получено 24.02.2017 .
  21. ^ "Apache Flink 1.2.0 Documentation: Distributed Runtime Environment - Savepoints". ci.apache.org . Получено 24.02.2017 .
  22. ^ «Документация Apache Flink 1.2.0: Руководство по программированию API Flink DataStream» . ci.apache.org . Проверено 24 февраля 2017 г.
  23. ^ "Apache Beam". beam.apache.org . Получено 24.02.2017 .
  24. ^ "Матрица возможностей Apache Beam". beam.apache.org . Получено 24.02.2017 .
  25. ^ "Почему Apache Beam? Точка зрения Google | Блог Google Cloud Big Data и машинного обучения | Google Cloud Platform". Google Cloud Platform . Архивировано из оригинала 25.02.2017 . Получено 24.02.2017 .
  26. ^ «Документация Apache Flink 1.2.0: Руководство по программированию API Flink DataSet» . ci.apache.org . Проверено 24 февраля 2017 г.
  27. ^ «Потоковая обработка для всех с SQL и Apache Flink». flink.apache.org . 24 мая 2016 г. Получено 08.01.2020 .
  28. ^ «Виртуальная конференция Flink Forward 2020».
  29. ^ "Стратосфера". stratosphere.eu .
  30. ^ «Стратосфера — управление информацией в облаке» . Deutsche Forschungsgemeinschaft (DFG) . Проверено 1 декабря 2023 г.
  31. ^ "Стратосфера". apache.org .
  32. ^ «Подробности проекта Apache Flink». apache.org .
  33. ^ "Apache Software Foundation объявляет Apache™ Flink™ проектом верхнего уровня: блог Apache Software Foundation". apache.org . 12 января 2015 г.
  34. ^ «Найдет ли таинственный Apache Flink свое место на предприятии?». siliconangle.com . 9 февраля 2015 г.
  35. ^ (на немецком)
  36. ^ "Apache Flink Log4j emergency releases". flink.apache.org . Apache Software Foundation. 16 декабря 2021 г. Получено 22 декабря 2021 г.

Внешние ссылки