Apache Flink je open-sourcový Framework pro zpracování streamingu, který vyvinula Apache Software Foundation. Jádrem Apache Flink je engine na distribuované streamování datového toku, který je psaný v Javě a Scale. Flink spouští programy datového toku v datově paralelním pipelinovém modelu. Pipelinový runtime systém použitý ve Flinku umožňuje spuštění bulk nebo batch služeb a streamovací zpracování programů. Navíc má Flink nativní podporu iterativních algoritmů.
Flink je streamovací engine s vysokou propustností a nízkou latencí. Dokáže nabídnout podporu pro zpracování času události a správu stavů. Flink aplikace jsou tolerantní k výpadkům v případě výpadku stroje a podporují sémantiku ve stylu „právě jednou“. Programy lze psát v Javě, Scale, Pythonu a SQL a jsou automaticky kompilovány a optimalizovány do programů datových toků, které jsou spouštěny na klustru nebo cloudovém prostředí.
Flink nemá vlastní systém ukládání dat a umožňuje tak napojení na datové zdroje jako je Amazon Kinesis, Apache Kafka, HDFS, Apache Cassandra nebo ElasticSearch.
Apache Flink je založený na programovacím modelu datového toku a nabízí zpracování konečných i nekonečných datových sad. Na základní úrovni se Flink skládá ze streamů a transformací. Konceptuálně se jedná o tok datových záznamů a transformace je operací, která bere jeden nebo více těchto toků jako vstup a produkuje jeden nebo více streamů jako výstup.
Apache Flink obsahuje dvě hlavní API: DataStream API pro omezené a neomezené streamy dat a DataSet API pro omezené datové sady. Flink zároveň nabízí Table API, které je založené na jazyce podobném SQL pro relační streamy a batch procesy, které mohou být jednoduše vnořené do DataStreamu nebo DataSetu.
Při spuštění jsou Flink programy mapovány na streamující datové toky. Každý datový tok Flinku začíná jedním nebo více zdroji a končí jedním nebo více datovými výstupy. Na streamu může být proveden libovolný počet transformací. Tyto streamy lze uspořádat přímo do acyklického grafu, což umožňuje větvit a spojovat datové toky.
Flink má vestavěné napojení na datové zdroje a uložení výstupů na Apache Kafka, Amazon Kinesis, HDFS, Apache Cassandra i další.
Apache Flink zahrnuje mechanismus tolerance k výpadkům na základě distribuovaných checkpointů. Checkpoint je automatický asynchronní snaphot stavu aplikace a pozice v rámci zdrojového streamu. V případě výpadku program využívající Flink při obnovení převezme stav z posledního uloženého checkpointu, což vede k tomu, že si Flink zachová sémantiku přesně jednoho stavu v rámci aplikace. Checkpointovací mechanismus může zahrnovat i externí systémy.
Zároveň existuje možnost nastavit body uložení, které jsou manuálně spuštěným ekvivalentem checkpointů.