Apache Flink: различия между версиями
[отпатрулированная версия] | [отпатрулированная версия] |
Содержимое удалено Содержимое добавлено
Neon (обсуждение | вклад) Нет описания правки |
Neon (обсуждение | вклад) Нет описания правки |
||
Строка 1:
{{карточка программы}}
'''Apache Flink''' — [[фреймворк]] с [[FOSS|открытым исходным кодом]] для реализации [[Обработка потоков событий|обработки потоков]], разработанный фондом [[Apache Software Foundation]].
В основу фреймворка положен движок для обработки процессов, написанный на языках [[Java]] и [[Scala (язык программирования)|Scala]].<ref>{{cite web|url=https://flink.apache.org/|title=Apache Flink: Scalable Batch and Stream Data Processing|work=apache.org}}</ref><ref>{{cite web|url=https://github.com/apache/flink|title=apache/flink|work=GitHub}}</ref> Flink поддерживает [[программирование потоков данных]] как в параллельном режиме, так и в
Flink обладает высокой пропускной способностью и низкими задержками<ref>{{Cite news|url=https://yahooeng.tumblr.com/post/135321837876/benchmarking-streaming-computation-engines-at|title=Benchmarking Streaming Computation Engines at Yahoo!|newspaper=Yahoo Engineering|access-date=2017-02-23}}</ref>, потоки могут активизироваться от событий и сохранять статус. Задачи в системе Flink устойчивы к отказам и используют только одну семантику .<ref name=":2">{{Cite arxiv|last=Carbone|first=Paris|last2=Fóra|first2=Gyula|last3=Ewen|first3=Stephan|last4=Haridi|first4=Seif|last5=Tzoumas|first5=Kostas|date=2015-06-29|title=Lightweight Asynchronous Snapshots for Distributed Dataflows|eprint=1506.08603|class=cs.DC}}</ref> Программы для фреймворка можно писать на языках [[Java (programming language)|Java]], [[Scala (язык программирования)|Scala]],<ref>{{cite web|url=https://ci.apache.org/projects/flink/flink-docs-release-1.2/dev/datastream_api.html|title=Apache Flink 1.2.0 Documentation: Flink DataStream API Programming Guide|website=ci.apache.org|language=en|access-date=2017-02-23}}</ref> [[Python]],<ref>{{cite web|url=https://ci.apache.org/projects/flink/flink-docs-release-1.2/dev/batch/python.html|title=Apache Flink 1.2.0 Documentation: Python Programming Guide|website=ci.apache.org|language=en|access-date=2017-02-23}}</ref> and [[SQL]]<ref>{{cite web|url=https://ci.apache.org/projects/flink/flink-docs-release-1.2/dev/table_api.html|title=Apache Flink 1.2.0 Documentation: Table and SQL|website=ci.apache.org|language=en|access-date=2017-02-23}}</ref>, задания автоматически компиллируются и оптимизируются <ref>Fabian Hueske, Mathias Peters, Matthias J. Sax, Astrid Rheinländer, Rico Bergmann, Aljoscha Krettek, and Kostas Tzoumas. 2012. ''Opening the black boxes in data flow optimization''. Proc. VLDB Endow. 5, 11 (July 2012), 1256-1267. [https://dx.doi.org/10.14778/2350229.2350244 DOI]</ref>, работая как в кластерах, так и в облачном сервере.<ref>Daniel Warneke and Odej Kao. 2009. ''Nephele: efficient parallel data processing in the cloud''. In Proceedings of the 2nd Workshop on Many-Task Computing on Grids and Supercomputers (MTAGS '09). ACM, New York, NY, USA, Article 8, 10 pages. [http://doi.acm.org/10.1145/1646468.1646476 DOI]</ref>
Строка 24:
В распределённых системах программы Flink могут работать по кластерам или быть независимыми, используя также YARN, Mesos, или Docker для конфигурирования и распределения ресурсов.<ref>{{cite web|url=https://ci.apache.org/projects/flink/flink-docs-release-1.2/concepts/runtime.html|title=Apache Flink 1.2.0 Documentation: Distributed Runtime Environment|website=ci.apache.org|language=en|access-date=2017-02-24}}</ref>
=== Статусы: контрольные точки, точки сохранения, отказоустойчивость ===
Apache Flink включает облегчённый механизм отказоустойчивости с использованием распределённых контрольных точек.<ref name=":2" /> Контрольная точка представляет собой автоматическиое асинхронное сохранение (snapshot) статуса приложения в исходном потоке. В случае отказа программа в среде Flink с опцией контрольных точек производит восстановление процесса с момента последнего сохранения, при этом подразумевается что Flink оперирует с только одной семантикой статуса приложения. Механизм контрольных точек использует отметки (hook) в коде прилдожения, чтобы внешние системы могли подключить сохранение статуса в контрольных точкахl (подобно трансакциям при работе с базами данных).
Flink включает также механизм "точек сохранения" (savepoints), которые активируются вручную.<ref>{{cite web|url=https://ci.apache.org/projects/flink/flink-docs-release-1.2/concepts/runtime.html#savepoints|title=Apache Flink 1.2.0 Documentation: Distributed Runtime Environment - Savepoints|website=ci.apache.org|language=en|access-date=2017-02-24}}</ref> Пользователь может создать точку сохранения, остановить программу в среде Flink, а потом заново запустить её с той же позиции. Точки сохранения позволяют также проводить изменения в программк без потери статуса приложения. Начиная с версии of Flink 1.2, точки сохранения позволяют заново запустить приложение в ситуации паралельной обработки данных
=== DataStream API ===
DataStream API в системе Flink проводит преобразования - такие как фильтрацию, агрегацию, выборку - на ограниченных или неограниченных потоках данных. DataStream API включает в себя более 20 различных типов преобразования, которые могут быть использованы на языках Java иd Scala.<ref>{{cite web|url=https://ci.apache.org/projects/flink/flink-docs-release-1.2/dev/datastream_api.html|title=Apache Flink 1.2.0 Documentation: Flink DataStream API Programming Guide|website=ci.apache.org|language=en|access-date=2017-02-24}}</ref>
|