1. 程式人生 > >【雲星資料---Apache Flink實戰系列(精品版)】:Apache Flink高階特性與高階應用006-Slot和Parallelism的深入分析001

【雲星資料---Apache Flink實戰系列(精品版)】:Apache Flink高階特性與高階應用006-Slot和Parallelism的深入分析001

一、flink架構

這裡寫圖片描述

1.flink是一個主從結構的分散式程式,它由client和cluster兩部分組成。

2.cluster由主節點JobManager(JM)和從節點TaskManager組成(TM)。
    a.JM負責協調分散式執行:排程Task、協調檢查點、協調失效恢復等工作。
      JM至少要有一個,也可有多個。多個JM可基於zookeeper做HA,一個active,其餘standby。
    b.TM負責執行一個具體的Dataflow的Task,快取並交換streams等工作。
      TM至少要有一個,也可有多個,多個TM組成worker叢集,併發執行任務。
    c.JM
和TM有多種部署方式,可以選擇使用裸機部署,使用container部署,使用yarn部署。 只要JM和TM能通訊即可,這樣JM就能下發任務到TM,TM也能執行任務並上報TM. 3.client屬於flink架構的一部分,但不屬於flink叢集。它的工作是連線user和cluster. a.client能夠將user提交的application分析成Dataflow提交給JM.JM會分配給TM做具體的執行工作。 在提交完Dataflow可以關閉,也可以不關閉. b.client不關閉的話還可以接受cluster處理進度報告,以便user能跟著任務的執行情況。

二、程式(Progrram)和資料流(Dataflows)

1.程式(Progrram)

這裡寫圖片描述

1.Progrram是user通過java,scala,python等程式語言呼叫flink相應的api編寫而成。
2.Program中使用者將data從source通過一系列的Transformation處理成期望的結果,然後sink到外部系統。
3.一般來說Transformation中都有一個Operator,但有時一個Transformation也可包括了多個Operator

2.資料流(Dataflows)

這裡寫圖片描述

1.program經過client解析形成Dataflow
2.
在Dataflow中主要包括Streams和Transformations兩個概念。 a.Transformations是指對資料的轉化操作。 a.Stream是指資料轉化過程中的中間結果。 3.將Transformation做點,Stream做邊可把Dataflow對映成一個有向無環圖(DAG)。 在執行程式的過程中可以根據程式的DAG做計算優化,可以合併或省略一些中間步驟。