taskbuilder開發(fā)項(xiàng)目實(shí)例 flink standalone的架構(gòu)及原理?
flink standalone的架構(gòu)及原理?一、整體架構(gòu)Flink以層級式系統(tǒng)形式組件其軟件棧,不同層的棧確立在其下層基礎(chǔ)上,而且各層進(jìn)行程序完全不同層的抽象形式。運(yùn)行時層以JobGraph形式能接
flink standalone的架構(gòu)及原理?
一、整體架構(gòu)
Flink以層級式系統(tǒng)形式組件其軟件棧,不同層的棧確立在其下層基礎(chǔ)上,而且各層進(jìn)行程序完全不同層的抽象形式。
運(yùn)行時層以JobGraph形式能接收程序。JobGraph即為一個像是化的并行數(shù)據(jù)流圖(dataflow),它強(qiáng)大正二十邊形數(shù)量的Task來接收和產(chǎn)生datastream。
DataStreamAPI和DataSetAPI都會不使用不能程序編譯的處理生成氣體JobGraph。DataSetAPI在用optimizer來確定對于程序的優(yōu)化方法,而DataStreamAPI則不使用streambuilder來成功該任務(wù)。
在先執(zhí)行JobGraph時,F(xiàn)link需要提供了多種候選作戰(zhàn)部署方案(如local,remote,YARN等)。
Flink附隨了一些再產(chǎn)生DataSet或DataStreamAPI程序的的類庫和API:去處理邏輯表可以查詢的Table,機(jī)器學(xué)習(xí)的FlinkML,圖像處理的Gelly,奇怪事件如何處理的CEP。
二、原理
1.流、轉(zhuǎn)換、操作符
Flink程序是由Stream和Transformation這兩個都差不多最終形成塊混編,其中Stream是一個中間最后數(shù)據(jù),而Transformation是一個操作,它對一個或多個再輸入Stream參與可以計(jì)算如何處理,輸出個或多個結(jié)果Stream。
Flink程序被不能執(zhí)行的時候,它會被映射為StreamingDataflow。一個StreamingDataflow是由一組Stream和Transformation混編,它類似一個DAG圖,在正常啟動的時候從一個或多個Source結(jié)束,已經(jīng)結(jié)束于一個或多個Sink。
2.分頭并進(jìn)數(shù)據(jù)流
三個Stream這個可以被組成多個Stream分區(qū)(Stream Partitions),兩個可以不被等分多個Subtask,每一個Subtask是在有所不同的線程中的的不能執(zhí)行的。一個的并行度,等于零 Subtask的個數(shù),一個Stream的并行度我總是不等于能生成它的的并行度。
One-to-one模式
比如從Source