Apache Flink: различия между версиями

[отпатрулированная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
Нет описания правки
Нет описания правки
Строка 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 поддерживает [[программирование потоков данных]] как в параллельном режиме, так и в турборежимеконвейерном режиме (pipeline).<ref>Alexander Alexandrov, Rico Bergmann, Stephan Ewen, Johann-Christoph Freytag, Fabian Hueske, Arvid Heise, Odej Kao, Marcus Leich, Ulf Leser, Volker Markl, Felix Naumann, Mathias Peters, Astrid Rheinländer, Matthias J. Sax, Sebastian Schelter, Mareike Höger, Kostas Tzoumas, and Daniel Warneke. 2014. ''The Stratosphere platform for big data analytics''. The VLDB Journal 23, 6 (December 2014), 939-964. [https://dx.doi.org/10.1007/s00778-014-0357-y DOI]</ref> В турборежимеконвейерном режиме (pipeline) Flink позволяет реализовать последовательность заданий (batch) и очерёдность заданий (stream).<ref>{{cite web|url=http://www.infoworld.com/article/2919602/hadoop/flink-hadoops-new-contender-for-mapreduce-spark.html|title=Apache Flink: New Hadoop contender squares off against Spark|author=Ian Pointer|date=7 May 2015|work=InfoWorld}}</ref><ref>{{cite web|url=http://www.odbms.org/blog/2015/06/on-apache-flink-interview-with-volker-markl/|title=On Apache Flink. Interview with Volker Markl.|work=odbms.org}}</ref> Flink поддерживает также итерационные алгоритмы естественным образом.<ref>Stephan Ewen, Kostas Tzoumas, Moritz Kaufmann, and Volker Markl. 2012. ''Spinning fast iterative data flows''. Proc. VLDB Endow. 5, 11 (July 2012), 1268-1279. [https://dx.doi.org/10.14778/2350229.2350245 DOI]</ref>
 
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 (подобно трансакциям при работе с базами данных).
=== State: Checkpoints, Savepoints, and Fault-tolerance ===
 
Apache Flink includes a lightweight fault tolerance mechanism based on distributed checkpoints.<ref name=":2" /> A checkpoint is an automatic, asynchronous snapshot of the state of an application and the position in a source stream. In the case of a failure, a Flink program with checkpointing enabled will, upon recovery, resume processing from the last completed checkpoint, ensuring that Flink maintains exactly-once state semantics within an application. The checkpointing mechanism exposes hooks for application code to include external systems into the checkpointing mechanism as well (like opening and committing transactions with a database system).
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, точки сохранения позволяют заново запустить приложение в ситуации паралельной обработки данных
 
Flink also includes a mechanism called savepoints, which are manually-triggered checkpoints.<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> A user can generate a savepoint, stop a running Flink program, then resume the program from the same application state and position in the stream. Savepoints enable updates to a Flink program or a Flink cluster without losing the application's state . As of Flink 1.2, savepoints also allow to restart an application with a different parallelism—allowing users to adapt to changing workloads.
-->
=== 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>