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