flink架構原理


行內大數據平台流計算:

一個作業啟動一個flink集群,各個作業的flink集群是隔離的,在web ui點擊cancel后將job cancel掉,同時將集群終止,將作業終止。

on k8s:一個tm一個slot。

on yarn:一個tm可有多個slot。

 

kafka topic

TopicSchema:{"type":"object","properties":{"id":{"type":"number"},"username":{"type":"string"}}}

以上提交作業到yarn上的流程:

1、新建yarn目錄

2、將MySQL驅動器傳到yarn

3、將配置文件傳到yarn

4、設置開發模式

5、啟動flink並提交作業命令

flink-1.7.1/bin/flink run -m yarn-cluster -yD hostname=wn18ddzxjap1002 -yD job.inst.id=103989 -yD security.kerberos.login.principal=5D7... -yD security.kerberos.login.keytab=/etc/security/keytabs/5D7....keytab -yD metrics.reporters=sla -yD metrics.reporter.sla.class=com.ksyun.dc.metrics.flink.CollectMetrics -yD metrics.reporter.sla.url=http://ops-platform.internal-bigdata.com:9080/api/metrics/streaming/batch -yD metrics.reporter.sla.interval='60 SECONDS' -ynm store_goods_amount_join_done -c com.ksyun.dc.streaming.framework.ApplicationOnScheduler -yn 1 -ys 1 -p 1 -yjm 1024 -ytm 3072 -yqu ksccd365...-yt /tmp/flink/yarnship/1180 -n -d /flink-1.7.1/framework/streaming-dist-1.0-SANPSHOT-fat.jar

命令行參數:

-c:指定程序入口類

-p:指定多少個並發度

-yD:動態自定義參數

-m yarn-cluster -yn 1:使用yarn集群啟動1個tm

-yjm:指定jm的內存大小

-ytm:指定tm的內存大小

-ys:每個tm的slot數量

-yqu:指定yarn資源隊列

-d:以detached模式運行

flink list:查看進群上運行的job

flink cancel:取消job

flink list --all:查看所有job,包括cancel的

flink命令行參考:

https://my.oschina.net/u/3005325/blog/2998948

 

 

flink架構

flink運行時組件:作業管理器JobManager、任務管理器TaskManager、資源管理器Resource Manager、分發器Dispacher

Flink:批處理和流處理結合的統一計算框架,提供數據分發和並行化計算的流數據處理引擎,支持批處理和流處理。

  Client:Client給用戶提供向Flink系統提交用戶任務(流式作業)的能力。

  TaskManager:業務執行節點,執行具體的用戶任務,可以有多個,各個manager平等。

  JobManager:管理節點,管理所有的TaskManager,並決策用戶任務在哪些TaskManager執行。JobManager在HA模式下可以有多個,但只有一個主JobMannager。

 

 

 

 

 

 

一個slot是flink處理的最小單元。

slot隔離的是內存,不是cpu。比如:

4cpu設置8slot,16g內存設置4slot,平均每個slot獨占4g,但如果有的slot計算量過大,則可能導致內存撐爆。具體一個tm包含多少個slot,可根據機器、計算復雜度而定。

一個tm有多少個slot可在配置文件中配置,即numberOfTaskSlots配置項。而parallelism配置項即作業算子的並行度。

slot和parallelism的區分:

parallelism:表示這個算子任務可拆分成多少個子任務去運行。

slot:表示同時可支持多少個子任務並行。

 

設置並行度的權限大小關系:

代碼設置並行度setParallelism(1) > 命令行提交設置的並行度 > 配置文件默認的並行度

每個算子在代碼里都可分別設置並行度,source算子用socket讀取數據時,並行度默認為1。

flink的並行:

數據並行:多個slot可同時處理數據,即多個子任務可同時運行。

任務並行:多個任務可同時運行。

作業並行:多個job同時在flink集群中運行(在行內大數據平台不支持這種並行,因為是采取的一個作業一個flink集群的模式,各個flink集群是隔離的)。

 

 

 

 

 

 

 

 

 

 

 

one to one且相同並行度的子任務可合並為一個任務,中間用->表示。

web ui中一個方框對應一個任務,一個->連接兩個子任務。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM