Learning Apache Flink(BASIC)

本文是參考Apache Flink v1.3官方文檔

1. Dataflows

Flink的程序包括兩部分,streams和transformations。stream指的就是流數(shù)據(jù),transformation指的是以stream作為輸入和輸出的操作。當程序執(zhí)行的時候,F(xiàn)link會將程序映射為一個streaming dataflows,如下所示

2. Parallel Dataflows

Flink的程序內(nèi)部是分布式并行執(zhí)行的,所以在真正的執(zhí)行過程中,每個stream會有多個stream partitions,每個操作或者說transformation算子會有多個operator subtasks,如下所示

3. Tasks and Operator Chains

在分布式并發(fā)執(zhí)行的情況下,Task是由chains operator subtasks構(gòu)成,并且每個task是一個線程。例如下圖,首先source和map構(gòu)成了一個chains operator,在并發(fā)過程中每個source和map算子又會分別產(chǎn)生兩個subtask,即source[1],map[1]和source[2],map[2]。那么source[1],map[1]就叫做一個chains operator subtasks,也就是說source[1],map[1]會在一個線程中執(zhí)行,source[2],map[2]在另一個線程中執(zhí)行。同樣,keyBy().window().apply()[1]也算是一個chains operator subtasks,所以keyBy().window().apply()[1]操作也會在一個獨立的線程中執(zhí)行。那么下圖相當于有5個task,因此需要5個線程來執(zhí)行這個streaming parallel dataflows。

4. Job Managers, Task Managers

JobManagers負責調(diào)度task,管理checkpoints等工作。
TaskManagers也叫做workers,是主要負責執(zhí)行dataflow。類似于strom中worker的作用。每個TaskManager就是一個JVM進程。

5. Task Slots

每個TaskManager就是一個JVM進程,一個TaskManager中會啟動多個獨立的線程,每個線程執(zhí)行一個task。為了管理TaskManager中可以使用的線程數(shù)(線程數(shù)決定了這個TaskManager中task的并發(fā)度),引入了Task Slot的概念。Task Slot是一個邏輯概念,用來執(zhí)行“one pipeline of parallel task”。可以理解為,每個task slot中執(zhí)行一個task。也就是說一個TaskManager中定義的task slot的數(shù)量就是這個TaskManager可以使用的線程數(shù),每個線程負責執(zhí)行一個task。

在Flink中的task slot概念類似于storm中executor的概念(storm基本概念請參考《Topology的并行度設置》),但是區(qū)別在于storm的executor中只能執(zhí)行相同bolt或者spout的任務,而task slot中執(zhí)行的是“pipeline task”,例如keyBy的結(jié)果可以直接作為window算子的輸入,減少了線程間的數(shù)據(jù)交換,序列化反序列化等操作提高了資源利用率。

假設集群中有2個TaskManagers每個配置3個slot,將一個程序MapFunction的并行度設置為4,ReduceFunction的并行度設置為3,會得到如下所示的資源分配圖,F(xiàn)link中所謂的pipeline可以理解為將任務“縱向”分割,即每個task slot中會執(zhí)行整個Source - Map - Reduce過程,而storm中每個executor是“橫向”分割,executor中要么都執(zhí)行Map任務要么都執(zhí)行Reduce任務。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容