Flink集群部署模式

根據(jù)集群的生命周期、資源隔離方式和應(yīng)用程序的main()方法執(zhí)行位置(client或者JobManager)可以將集群部署模式分為:Flink Session Cluster(session mode)、Flink Job Cluster(per-job mode) 和Flink Application Cluster(application mode)三類。

deployment mode

Flink Session Cluster(session mode)

Flink Session Cluster集群部署模式也稱為session mode。該模式集群會預(yù)先啟動、長時(shí)間運(yùn)行,并且能夠接收多個(gè)job提交運(yùn)行。也就是提交到集群的job共享一套flink runtime cluster(JobManager和TaskManager)。

該模式特點(diǎn)如下:

  • 生命周期:集群生命周期不受job影響,只有手動關(guān)閉會話,集群才會被停止。

  • 資源隔離:所有job共用一套JobManager和TaskManager,所有job間存在集群資源競爭,比如提交job階段的帶寬。并且當(dāng)節(jié)點(diǎn)發(fā)生FO時(shí),會影響多個(gè)job(JobManager crash會影響所有job)。

  • 模式優(yōu)點(diǎn):

    • 集群所有節(jié)點(diǎn)都預(yù)先啟動,無需每次啟動作業(yè)都申請資源、啟動節(jié)點(diǎn),尤其對于作業(yè)執(zhí)行時(shí)間段、對job啟動時(shí)間敏感的任務(wù)。
    • 資源充分共享,提升資源利用率。
  • 模式缺點(diǎn):

    • 資源隔離比較差。
    • 非Native部署,TaskManager不容易擴(kuò)展,Slot計(jì)算資源伸縮比較差。
  • Client負(fù)載:Client負(fù)載比較大,需要生成JobGraph,并將JobGraph及其依賴jar提交到JobManager。

Flink Session Cluster

Flink Job Cluter(per-job mode)

Flink Job Cluster集群部署模式又稱為per-job mode。該模式與Job綁定,集群管理器會為每個(gè)Job啟動一個(gè)flink runtime cluster(JobManager和TaskManager)。Client會首先向集群管理器請求資源來啟動JobManager,并將job提交給其內(nèi)部的Dispatcher,TaskManager根據(jù)job的資源請求延遲分配啟動的。

該模式特點(diǎn)如下:

  • 生命周期:集群生命周期和job綁定,job停止后集群也會被停止。

  • 資源隔離:單個(gè)Job獨(dú)享一套JobManager和TaskManager,不存在資源競爭問題。并且節(jié)點(diǎn)發(fā)生FO后,只會影響單個(gè)job。

  • 模式優(yōu)點(diǎn):

    • Job之間資源充分隔離,不會互相影響。
    • 資源資源根據(jù)job所需來申請。
  • 模式缺點(diǎn):

    • job啟動慢,因?yàn)镽esourceManager需要向外部資源管理器請求資源來啟動TaskManager。所以一般適合long runtime類型job運(yùn)行。
    • 資源相較浪費(fèi),每個(gè)job都需要啟動一個(gè)JobManager。
  • Client負(fù)載:Client負(fù)載比較大,需要生成JobGraph,并將JobGraph及其依賴jar上傳到JobManager。

Flink Job Cluster

NOTE: Flink Job Cluster模式不支持部署在Kubernetes上。

Flink Application Cluster(application mode)

Flink Application Cluster集群部署模式又稱為Application mode。該模式集群屬于專屬集群模式,只會執(zhí)行一個(gè)Flink Application中的job,集群管理器為每個(gè)Flink Application啟動一個(gè)flink runtime cluster(JobManager和TaskManager)。并且應(yīng)用程序的main方法是運(yùn)行在Cluster中,而不是client上。

該模式可以看做是對per-job模式和session模式的優(yōu)化部署模式。集群執(zhí)行job粒度上,相較前兩者找到了更好的一個(gè)隔離點(diǎn),并且減輕了Client的負(fù)載。

該模式特點(diǎn)如下:

  • 生命周期:生命周期和Flink Application綁定,當(dāng)Application全部執(zhí)行完,集群才會停止。

  • 資源隔離:Flink Application使用一套JobManager和TaskManager,相較前兩種模式找到了一個(gè)比較好的隔離點(diǎn)。

  • 模式優(yōu)點(diǎn):

    • 降低Client負(fù)載。
    • Application之間實(shí)現(xiàn)資源隔離,Application內(nèi)實(shí)現(xiàn)資源共享。
  • 模式缺點(diǎn):

    • 暫無
  • Client負(fù)載:用戶將代碼邏輯和相關(guān)依賴打到一個(gè)jar中。Client只需負(fù)責(zé)作業(yè)提交(不包括作業(yè)上傳),所以負(fù)載非常輕。

Flink Application Cluster

NOTE: Application mode中的多個(gè)job,實(shí)際在代碼上的表現(xiàn)就是能夠允許在一個(gè)Application里面調(diào)用多次execute/executeAsyc方法。但是execute方法會被阻塞,也就是只有一個(gè)job完成之后才能繼續(xù)下一個(gè)job的execute,但是可以通過executeAsync進(jìn)行異步非阻塞執(zhí)行。
另一個(gè)需要注意的點(diǎn)是,對于Application mode的進(jìn)行HA部署時(shí),是不支持多個(gè)execute執(zhí)行的。

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

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

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