Jump to content

Апач Флинк

Апач Флинк
Разработчик(и) Фонд программного обеспечения Apache
Первоначальный выпуск май 2011 г .; 13 лет назад ( 2011-05 )
Стабильная версия
1.19.1 [1]  Отредактируйте это в Викиданных / 14 июня 2024 г .; 43 дня назад ( 14 июня 2024 г. ) [2]
Репозиторий
Написано в Ява и Скала
Операционная система Кросс-платформенный
Тип
Лицензия Лицензия Апач 2.0
Веб-сайт значительный .apache .org  Edit this on Wikidata

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 «предлагает расширенную унифицированную модель программирования, позволяющую (разработчику) реализовывать задания пакетной и потоковой обработки данных, которые могут выполняться на любом механизме выполнения». [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
Легенда:
Старая версия
Старая версия, все еще поддерживается
Последняя версия
Latest preview version
Future release

Даты выпуска

  • 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. ^ «Выпуск 1.19.1» . 14 июня 2024 г. Проверено 20 июня 2024 г.
  2. ^ «Все стабильные выпуски Flink» . http://flink.apache.org . Фонд программного обеспечения Apache . Проверено 20 декабря 2021 г.
  3. ^ «Apache Flink: масштабируемая пакетная и потоковая обработка данных» . apache.org .
  4. ^ «Апач/флинк» . Гитхаб . 29 января 2022 г.
  5. ^ Александр Александров, Рико Бергманн, Стефан Юэн, Иоганн-Кристоф Фрейтаг, Фабиан Хюске, Арвид Хейзе, Одей Као, Маркус Лейх, Ульф Лезер, Фолькер Маркл , Феликс Науманн, Матиас Петерс, Астрид Райнлендер, Маттиас Дж. Сакс, Себастьян Шельтер, Марайке Хёгер, Костас Цумас и Даниэль Варнеке. 2014. Платформа Stratphere для анализа больших данных . Журнал ВЛДБ 23, 6 (декабрь 2014 г.), 939–964. DOI
  6. ^ Ян Пойнтер (7 мая 2015 г.). «Apache Flink: новый претендент на Hadoop сражается со Spark» . Инфомир .
  7. ^ «Об Apache Flink. Интервью с Фолькером Марклом» . odbms.org .
  8. ^ Стефан Юэн, Костас Цумас, Мориц Кауфманн и Фолькер Маркл . 2012. Вращающиеся быстрые итеративные потоки данных . Учеб. ВЛДБ Эндоу. 5, 11 (июль 2012 г.), 1268–1279. DOI
  9. ^ «Сравнительный анализ потоковых вычислительных систем в Yahoo!» . Yahoo Инжиниринг . Проверено 23 февраля 2017 г.
  10. ^ Jump up to: а б Карбоне, Париж; Фора, Дьюла; Юэн, Стефан; Хариди, Сейф; Цумас, Костас (29 июня 2015 г.). «Облегченные асинхронные снимки для распределенных потоков данных». 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: Руководство по программированию на Python» . ci.apache.org . Проверено 23 февраля 2017 г.
  13. ^ «Документация Apache Flink 1.2.0: таблицы и SQL» . ci.apache.org . Проверено 23 февраля 2017 г.
  14. ^ Фабиан Хюске, Матиас Петерс, Матиас Дж. Сакс, Астрид Райнлендер, Рико Бергманн, Алеша Креттек и Костас Цумас. 2012. Открытие черных ящиков в оптимизации потоков данных . Учеб. ВЛДБ Эндоу. 5, 11 (июль 2012 г.), 1256–1267. DOI
  15. ^ Дэниел Варнеке и Одей Као. 2009. Nephele: эффективная параллельная обработка данных в облаке . В материалах 2-го семинара по многозадачным вычислениям на сетях и суперкомпьютерах (MTAGS '09). ACM, Нью-Йорк, Нью-Йорк, США, Статья 8, 10 страниц. DOI
  16. ^ Jump up to: а б «Документация Apache Flink 1.2.0: соединители потоковой передачи» . ci.apache.org . Проверено 23 февраля 2017 г.
  17. ^ «ASF Git Repos — flink.git/blob — ЛИЦЕНЗИЯ» . apache.org . Архивировано из оригинала 23 октября 2017 г. Проверено 12 апреля 2015 г.
  18. ^ Jump up to: а б «Документация Apache Flink 1.2.0: Модель программирования потока данных» . ci.apache.org . Проверено 23 февраля 2017 г.
  19. ^ «Kinesis Data Streams: обработка потоковых данных в реальном времени» . 5 января 2022 г.
  20. ^ «Документация Apache Flink 1.2.0: распределенная среда выполнения» . ci.apache.org . Проверено 24 февраля 2017 г.
  21. ^ «Документация Apache Flink 1.2.0: Распределенная среда выполнения — точки сохранения» . ci.apache.org . Проверено 24 февраля 2017 г.
  22. ^ «Документация Apache Flink 1.2.0: Руководство по программированию API Flink DataStream» . ci.apache.org . Проверено 24 февраля 2017 г.
  23. ^ «Апачский луч» . www.beam.apache.org . Проверено 24 февраля 2017 г.
  24. ^ «Матрица возможностей Apache Beam» . www.beam.apache.org . Проверено 24 февраля 2017 г.
  25. ^ «Почему Apache Beam? Взгляд Google | Блог Google Cloud по большим данным и машинному обучению | Облачная платформа Google» . Облачная платформа Google . Архивировано из оригинала 25 февраля 2017 г. Проверено 24 февраля 2017 г.
  26. ^ «Документация Apache Flink 1.2.0: Руководство по программированию API Flink DataSet» . ci.apache.org . Проверено 24 февраля 2017 г.
  27. ^ «Потоковая обработка для всех с помощью SQL и Apache Flink» . http://flink.apache.org . 24 мая 2016 года . Проверено 8 января 2020 г.
  28. ^ «Виртуальная конференция Flink Forward 2020» .
  29. ^ «Стратосфера» . Stratosphere.eu .
  30. ^ «Стратосфера — управление информацией в облаке» . Немецкий исследовательский фонд (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 свое место на предприятии?» . www.siliconangle.com . 9 февраля 2015 г.
  35. ^ (на немецком языке)
  36. ^ «Аварийные выпуски Apache Flink Log4j» . http://flink.apache.org . Фонд программного обеспечения Apache. 16 декабря 2021 г. Проверено 22 декабря 2021 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: de099aa8b23d368a0f218c4863f91332__1716964980
URL1:https://arc.ask3.ru/arc/aa/de/32/de099aa8b23d368a0f218c4863f91332.html
Заголовок, (Title) документа по адресу, URL1:
Apache Flink - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)