Apache Flink - Apache Flink

Apache Flink
Logo Apache Flink
VývojářiSoftwarová nadace Apache
První vydáníKvěten 2011; Před 9 lety (2011-05)
Stabilní uvolnění
1.11.0 / 6. července 2020; před 5 měsíci (2020-07-06)
ÚložištěFlink Repository
NapsánoJáva a Scala
Operační systémCross-platform
Typ
LicenceLicence Apache 2.0
webová stránkablikat.apache.org

Apache Flink je open-source, sjednocený zpracování proudu a dávkové zpracování rámec vyvinutý společností Softwarová nadace Apache. Jádrem Apache Flink je distribuovaný streamovací datový tok napsaný v Jáva a Scala.[1][2] Flink provádí libovolně datový tok programy v a datově paralelní a pipeline (proto paralelní úkol ) způsobem.[3] Pipeline runtime systém Flink umožňuje provádění hromadné / šarže a streamovací programy.[4][5] Běh programu Flink dále podporuje provádění iterační algoritmy nativně.[6]

Flink poskytuje streamovací modul s vysokou propustností a nízkou latencí[7] stejně jako podpora pro zpracování událostí a správu stavu. Aplikace Flink jsou odolné vůči chybám v případě selhání stroje a podporují sémantiku přesně jednou.[8] Programy lze zapsat Jáva, Scala,[9] Krajta,[10] a SQL[11] a jsou automaticky kompilovány a optimalizovány[12] do programů toku dat, které jsou prováděny v prostředí clusteru nebo cloudu.[13]

Flink neposkytuje svůj vlastní systém pro ukládání dat, ale poskytuje konektory pro zdroje dat a jímky pro systémy, jako je Amazon Kinesis, Apache Kafka, Alluxio, HDFS, Apache Cassandra, a Elastické vyhledávání.[14]

Rozvoj

Apache Flink je vyvíjen pod Licence Apache 2.0[15] komunitou Apache Flink v rámci Softwarová nadace Apache. Projekt řídí více než 25 zadavatelů a více než 340 přispěvatelů.

Ververica (dříve Data Artisans), společnost, kterou založili původní tvůrci Apache Flink,[16] zaměstnává mnoho současných komisařů Apache Flink.[17]

Přehled

Apache Flink model programování toku dat poskytuje zpracování událostí v čase na konečných i nekonečných souborech dat. Na základní úrovni se programy Flink skládají z proudů a transformací. "Koncepčně je stream (potenciálně nikdy nekončící) tok datových záznamů a transformace je operace, která přijímá jeden nebo více proudů jako vstup a ve výsledku vytváří jeden nebo více výstupních proudů."[18]

Apache Flink obsahuje dvě základní rozhraní API: rozhraní DataStream API pro omezené nebo neomezené datové proudy a rozhraní DataSet API pro omezené datové sady. Flink také nabízí Table API, což je výrazový jazyk podobný SQL pro relační stream a dávkové zpracování, který lze snadno zabudovat do rozhraní DataStream a DataSet API společnosti Flink. Nejvyšším jazykem podporovaným Flinkem je SQL, který je sémanticky podobný Table API a představuje programy jako výrazy dotazů SQL.

Programovací model a distribuovaný běh

Po provedení jsou programy Flink mapovány na streamování toky dat.[18] Každý datový tok Flink začíná jedním nebo více zdroji (vstup dat, např. Fronta zpráv nebo souborový systém) a končí jedním nebo více jímkami (výstup dat, např. Fronta zpráv, souborový systém nebo databáze). Ve streamu lze provést libovolný počet transformací. Tyto proudy lze uspořádat jako směrovaný, acyklický graf toku dat, který umožňuje aplikaci větvit a sloučit toky dat.

Flink nabízí hotové konektory zdroje a dřezu Alluxio, Apache Kafka, Amazon Kinesis, HDFS, Apache Cassandra, a více.[14]

Programy Flink běží jako distribuovaný systém v rámci klastru a lze je nasadit v samostatném režimu i v nastaveních YARN, Mesos, Docker a dalších rámcích pro správu zdrojů.[19]

Stav: Kontrolní body, body uložení a tolerance chyb

Apache Flink obsahuje lehký mechanismus odolnosti proti chybám založený na distribuovaných kontrolních bodech.[8] Kontrolní bod je automatický, asynchronní snímek stavu aplikace a polohy ve zdrojovém streamu. V případě selhání program Flink s povoleným kontrolním bodem po obnovení obnoví zpracování od posledního dokončeného kontrolního bodu a zajistí, aby Flink v aplikaci udržoval sémantiku stavu přesně jednou. Mechanismus kontrolního bodu odhaluje háčky kódu aplikace, aby do mechanismu kontrolního bodu zahrnoval také externí systémy (například otevírání a provádění transakcí s databázovým systémem).

Flink také zahrnuje mechanismus zvaný savepoints, což jsou ručně spouštěné kontrolní body.[20] Uživatel může vygenerovat bod uložení, zastavit spuštěný program Flink a poté pokračovat v programu ze stejného stavu aplikace a pozice v proudu. Body uložení umožňují aktualizace programu Flink nebo klastru Flink bez ztráty stavu aplikace. Od verze Flink 1.2 umožňují body obnovení také restartovat aplikaci s jiným paralelismem - což umožňuje uživatelům přizpůsobit se měnícím se pracovním vytížením.

DataStream API

Rozhraní DataStream API společnosti Flink umožňuje transformace (např. Filtry, agregace, funkce okna) na omezené nebo neomezené datové proudy. Rozhraní DataStream API obsahuje více než 20 různých typů transformací a je k dispozici v prostředí Java a Scala.[21]

Jednoduchým příkladem programu pro zpracování stavového proudu je aplikace, která vydává počet slov z nepřetržitého vstupního proudu a seskupuje data do 5sekundových oken:

import org.apache.flink.streaming.api.scala._import org.apache.flink.streaming.api.windowing.time.Timepřípad třída Počet slov(slovo: Tětiva, počet: Int)objekt WindowWordCount {  def hlavní(args: Pole[Tětiva]) {    val env = StreamExecutionEnvironment.getExecutionEnvironment    val text = env.socketTextStream("localhost", 9999)    val počítá = text.flatMap { _.toLowerCase.rozdělit(„ W +“) filtr { _.neprázdný } }      .mapa { Počet slov(_, 1) }      .keyBy("slovo")      .časové okno(Čas.sekundy(5))      .součet("počet")    počítá.tisk    env.vykonat("Okno Stream WordCount")  }}

Apache Beam - Flink Runner

Apache Beam „Poskytuje pokročilý model jednotného programování, který umožňuje (vývojáři) implementovat dávkové a streamovací úlohy zpracování dat, které lze spustit na jakémkoli výkonném stroji.“[22] Běžec Apache Flink-on-Beam je nejvíce funkčně bohatý podle matice schopností udržované komunitou Beam.[23]

Data Artisans ve spolupráci s komunitou Apache Flink úzce spolupracoval s komunitou Beam na vývoji Flink runner.[24]

DataSet API

Rozhraní DataSet API společnosti Flink umožňuje transformace (např. Filtry, mapování, připojení, seskupování) na omezených souborech dat. Rozhraní DataSet API zahrnuje více než 20 různých typů transformací.[25] API je k dispozici v Javě, Scale a experimentálním Python API. Rozhraní DataSet API společnosti Flink je koncepčně podobné rozhraní DataStream API.

Tabulka API a SQL

Flink's Table API je jazyk podobný výrazu SQL pro relační stream a dávkové zpracování, který lze vložit do API Flink pro Java a Scala DataSet a DataStream. Rozhraní Table API a rozhraní SQL pracují na relační abstrakci Table. Tabulky lze vytvářet z externích zdrojů dat nebo z existujících datových proudů a datových sad. Rozhraní Table API podporuje relační operátory, jako je výběr, agregace a spojení v tabulkách.

Na tabulky lze také dotazovat s běžným SQL. Rozhraní Table API a SQL nabízejí ekvivalentní funkce a lze je kombinovat ve stejném programu. Když se tabulka převede zpět na DataSet nebo DataStream, logický plán, který byl definován relačními operátory a dotazy SQL, je optimalizován pomocí Apache kalcit a je transformován do programu DataSet nebo DataStream.[26]

Flink vpřed

Flink Forward je každoroční konference o Apache Flink. První ročník Flink Forward se konal v roce 2015 v Berlíně. Dvoudenní konference měla více než 250 účastníků ze 16 zemí. Zasedání byla organizována ve dvou skladbách s více než 30 technickými prezentacemi od vývojářů Flink a jednou další skladbou s praktickým tréninkem Flink.

V roce 2016 se konference zúčastnilo 350 účastníků a více než 40 řečníků představilo technické přednášky ve 3 paralelních stopách. Třetí den byli účastníci pozváni k účasti na praktických školeních.

V roce 2017 se akce rozšíří i do San Franciska. Konferenční den je věnován technickým rozhovorům o tom, jak se Flink používá v podniku, vnitřním systémům Flink, integraci ekosystémů s Flink a budoucnosti platformy. Obsahuje hlavní přednášky, přednášky uživatelů Flink v průmyslu a na akademické půdě a praktická školení na Apache Flink.

V roce 2020 bylo po pandemii COVID-19 zrušeno jarní vydání Flink Forward, které mělo být hostováno v San Francisku. Místo toho byla konference hostována virtuálně, počínaje 22. dubnem a končením 24. dubna, představovala živé hlavní přednášky, případy použití Flink, interní stránky Apache Flink a další témata týkající se zpracování streamů a analýz v reálném čase.[27]

Dějiny

V roce 2010 byl zahájen výzkumný projekt „Stratosphere: Information Management on the Cloud“[28] (financováno z Německá výzkumná nadace (DFG)[29]) byla zahájena jako spolupráce Technická univerzita v Berlíně, Humboldt-Universität zu Berlin, a Hasso-Plattner-Institut Postupim. Flink vycházel z vidlice distribuovaného prováděcího enginu Stratosphere a stal se Inkubátor Apache projekt v březnu 2014.[30] V prosinci 2014 byl Flink přijat jako projekt nejvyšší úrovně Apache.[31][32][33][34]

VerzePůvodní datum vydáníNejnovější verzeDatum vydání
Stará verze, již není udržována: 0.92015-06-240.9.12015-09-01
Stará verze, již není udržována: 0.102015-11-160.10.22016-02-11
Stará verze, již není udržována: 1.02016-03-081.0.32016-05-11
Stará verze, již není udržována: 1.12016-08-081.1.52017-03-22
Stará verze, již není udržována: 1.22017-02-061.2.12017-04-26
Stará verze, již není udržována: 1.32017-06-011.3.32018-03-15
Stará verze, již není udržována: 1.42017-12-121.4.22018-03-08
Stará verze, již není udržována: 1.52018-05-251.5.62018-12-26
Stará verze, již není udržována: 1.62018-08-081.6.32018-12-22
Stará verze, již není udržována: 1.72018-11-301.7.22019-02-15
Stará verze, již není udržována: 1.82019-04-091.8.32019-12-11
Starší verze, přesto stále udržovaná: 1.92019-08-221.9.22020-01-30
Aktuální stabilní verze: 1.102020-02-111.10.02020-02-11

Datum vydání

  • 02/2020: Apache Flink 1.10 (02/2020: v1.10.0)
  • 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)
  • 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 milníku-1

Data vydání inkubátoru Apache

  • 01/2015: Apache Flink 0,8 inkubace
  • 11/2014: Apache Flink 0,7 inkubace
  • 08/2014: Apache Flink 0,6 inkubace (09/2014: v0.6.1-inkubace)
  • 05/2014: Stratosphere 0.5 (06/2014: v0.5.1; 07/2014: v0.5.2)

Data vydání pre-Apache Stratosphere

  • 01/2014: Stratosphere 0.4 (verze 0.3 byla přeskočena)
  • 08/2012: Stratosphere 0.2
  • 05/2011: Stratosphere 0.1 (08/2011: v0.1.1)

Viz také

Reference

  1. ^ „Apache Flink: Škálovatelné dávkové a streamové zpracování dat“. apache.org.
  2. ^ "apache / flink". GitHub.
  3. ^ 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 a Daniel Warneke. 2014. Platforma Stratosphere pro analýzu velkých dat. VLDB Journal 23, 6 (prosinec 2014), 939-964. DOI
  4. ^ Ian Pointer (7. května 2015). „Apache Flink: Nový uchazeč Hadoop stojí proti Sparku“. InfoWorld.
  5. ^ „Na Apache Flink. Rozhovor s Volkerem Marklem“. odbms.org.
  6. ^ Stephan Ewen, Kostas Tzoumas, Moritz Kaufmann a Volker Markl. 2012. Rychlý iterativní tok dat. Proc. VLDB Endow. 5, 11 (červenec 2012), 1268-1279. DOI
  7. ^ „Benchmarking Streaming Computation Engines ve společnosti Yahoo!“. Yahoo Engineering. Citováno 2017-02-23.
  8. ^ A b Carbone, Paříž; Fóra, Gyula; Ewen, Stephan; Haridi, Seif; Tzoumas, Kostas (2015-06-29). "Lehké asynchronní snímky pro distribuované toky dat". arXiv:1506.08603 [cs.DC ].
  9. ^ „Dokumentace Apache Flink 1.2.0: Průvodce programováním Flink DataStream API“. ci.apache.org. Citováno 2017-02-23.
  10. ^ „Dokumentace Apache Flink 1.2.0: Průvodce programováním v Pythonu“. ci.apache.org. Citováno 2017-02-23.
  11. ^ „Dokumentace Apache Flink 1.2.0: Tabulka a SQL“. ci.apache.org. Citováno 2017-02-23.
  12. ^ Fabian Hueske, Mathias Peters, Matthias J. Sax, Astrid Rheinländer, Rico Bergmann, Aljoscha Krettek a Kostas Tzoumas. 2012. Otevření černé skříňky v optimalizaci toku dat. Proc. VLDB Endow. 5, 11 (červenec 2012), 1256-1267. DOI
  13. ^ Daniel Warneke a Odej Kao. 2009. Nephele: efektivní paralelní zpracování dat v cloudu. In Proceedings of the 2nd Workshop on Many-Task Computing on Grids and Supercomputers (MTAGS '09). ACM, New York, NY, USA, článek 8, 10 stran. DOI
  14. ^ A b „Dokumentace Apache Flink 1.2.0: Streamovací konektory“. ci.apache.org. Citováno 2017-02-23.
  15. ^ „ASF Git Repos - flink.git / blob - LICENCE“. apache.org. Archivovány od originál dne 2017-10-23. Citováno 2015-04-12.
  16. ^ „About - Ververica“. ververica.com. Citováno 2020-03-18.
  17. ^ „Apache Flink: Informace o komunitě a projektu“. flink.apache.org. Citováno 2017-02-23.
  18. ^ A b „Dokumentace Apache Flink 1.2.0: Programovací model toku dat“. ci.apache.org. Citováno 2017-02-23.
  19. ^ „Dokumentace Apache Flink 1.2.0: Distribuované běhové prostředí“. ci.apache.org. Citováno 2017-02-24.
  20. ^ „Dokumentace Apache Flink 1.2.0: Distribuované běhové prostředí - body uložení“. ci.apache.org. Citováno 2017-02-24.
  21. ^ „Dokumentace Apache Flink 1.2.0: Průvodce programováním Flink DataStream API“. ci.apache.org. Citováno 2017-02-24.
  22. ^ "Apache Beam". beam.apache.org. Citováno 2017-02-24.
  23. ^ "Matice schopností Apache Beam". beam.apache.org. Citováno 2017-02-24.
  24. ^ „Proč Apache Beam? Perspektiva Google | Blog o cloudových datech a strojovém učení Google Cloud | Google Cloud Platform“. Google Cloud Platform. Citováno 2017-02-24.
  25. ^ „Dokumentace Apache Flink 1.2.0: Průvodce programováním Flink DataSet API“. ci.apache.org. Citováno 2017-02-24.
  26. ^ "Streamování pro každého s SQL a Apache Flink". flink.apache.org. Citováno 2020-01-08.
  27. ^ „Virtuální konference Flink Forward 2020“.
  28. ^ "Stratosféra". stratosphere.eu.
  29. ^ „DFG - Deutsche Forschungsgemeinschaft -“. dfg.de.
  30. ^ "Stratosféra". apache.org.
  31. ^ „Detaily projektu pro Apache Flink“. apache.org.
  32. ^ „Apache Software Foundation oznamuje Apache ™ Flink ™ jako projekt nejvyšší úrovně: Blog Apache Software Foundation“. apache.org.
  33. ^ „Najde tajemný Apache Flink v podniku sladké místo?“. siliconangle.com.
  34. ^ (v němčině)

externí odkazy