主頁 > 資料庫 > Flink模式

Flink模式

2023-03-13 07:44:10 資料庫

Per-job Cluster

該模式下,一個作業一個集群,作業之間相互隔離,

在Per-Job模式下,集群管理器框架用于為每個提交的Job啟動一個 Flink 集群,Job完成后,集群將關閉,所有殘留的資源也將被清除,

此模式可以更好地隔離資源,因為行為例外的Job不會影響任何其他Job,另外,由于每個應用程式都有其自己的JobManager,因此它將記錄的負載分散到多個物體中,

場景:Per-Job模式適合長期運行的Job,這些Job可以接受啟動延遲的增加以支持彈性,

資源管理器支持:Yarn

Application

與per-job 模式相比,在Application 模式下,main() 方法在集群上而不是在客戶端執行,

場景:任務啟動較慢,適合于長時間運行的大型任務,

資源管理器支持:Yarn、Native kubernetes

Session

該模式下,作業共享集群資源,Session 模式提交的應用都在該集群里執行,會導致資源的競爭,

該模式優勢是無需為每一個提交的任務花費精力去分解集群,但是,如果Job例外或是TaskManager 宕掉,那么該TaskManager運行的其他Job都會失敗,除了影響到任務,也意味著潛在需要更多的恢復操作,重啟所有的Job,會并發訪問檔案系統,會導致該檔案系統對其他服務不可用,此外,單集群運行多個Job,意味著JobManager更大的負載,

場景:該模式適合于對啟動延遲要求較高且運行時間較短的作業,例如互動式查詢,任務提交速度快,適合頻繁提交運行的短時間任務,

資源管理器支持:Standalone、Yarn、Native kubernetes

Standalone

Standalone模式需要在任務啟動時就確定TaskManager的數量,不能像Yarn一樣,可以在任務啟動時申請動態資源,

很多時候任務需要多少個TaskManager事先并不知道,TaskManager設定少了,任務可能跑不起來,多了又會造成資源浪費,需要在任務啟動時才能確定需要多少個TaskMananger,

Standalone Application kubernetes

需要先將用戶代碼都打到鏡像里面,然后根據該鏡像來部署一個flink集群運行用戶代碼,

每提交一個任務,單獨啟動一個集群運行該任務,運行結束集群被洗掉,資源也被釋放,

Standalone Session kubernetes

在Session模式下,先啟動一個Flink集群,然后向該集群提交任務,所有任務共用JobManager,

Native kubernetes

Flink 的 Client 內置了一個 K8s Client,可以借助 K8s Client 去創建 JobManager,當 Job 提交之后,如果對資源有需求,JobManager 會向 Flink 自己的 ResourceManager 去申請資源,這個時候 Flink 的 ResourceManager 會直接跟 K8s 的 API Server 通信,將這些請求資源直接下發給 K8s Cluster,告訴它需要多少個 TaskManger,每個 TaskManager 多大,當任務運行完之后,它也會告訴 K8s Cluster 釋放沒有使用的資源,相當于 Flink 用很原生的方式了解到 K8s Cluster 的存在,并知曉何時申請資源,何時釋放資源,

Native Kubernetes Application

native kubernetes下,application模式相當于提交任務時調k8s api自動拉起一個flink集群跑該應用,然后跑完就洗掉集群,

這種模式比較適合對啟動時間不敏感、且長時間運行的作業,不適合對任務啟動時間比較敏感的場景,

優點:隔離性比較好,任務之間資源不沖突,一個任務單獨使用一個 Flink 集群;相對于 Flink session 集群而且,資源隨用隨建,任務執行完成后立刻銷毀資源,資源利用率會高一些,

缺點:需要提前指定 TaskManager 的數量,如果 TaskManager 指定的少了會導致作業運行失敗,指定的多了仍會降低資源利用率;資源是實時創建的,用戶的作業在被運行前,需要先等待以下程序,

flink on native kubernetes application模式:提交任務示例
./bin/flink run-application --target kubernetes-application
-Dkubernetes.namespace=flink-native-kubernetes
-Dkubernetes.cluster-id=flink-application-cluster
-Dkubernetes.jobmanager.service-account=flink
-Dkubernetes.container.image=flink:1.14.2
-Dkubernetes.rest-service.exposed.type=NodePort
-Djobmanager.heap.size=1024m
-Dkubernetes.jobmanager.cpu=1
-Dkubernetes.taskmanager.cpu=2
-Dtaskmanager.memory.process.size=1024m
-Dtaskmanager.numberOfTaskSlots=2
local:///opt/flink/examples/batch/WordCount.jar
應用鏡像構建方式:
`FROM flink:1.14.2
 RUN mkdir -p $FLINK_HOME/usrlib
 COPY my-flink-job.jar $FLINK_HOME/usrlib/my-flink-job.jar`

Native Kubernetes Session

native kubernetes下,session模式是提前調k8s api啟動一個常駐的flink集群,然后客戶端提交任務時,調k8s api自動起一個taskmanager pod 運行任務,然后等任務運行完之后,這個taskmanager的任務pod會被銷毀,

flink on native kubernetes session模式:

1、kubectl create namespace flink-session-cluster

2、kubectl create serviceaccount flink -n flink-session-cluster

3、kubectl create clusterrolebinding flink-role-binding-flink --clusterrole=edit --serviceaccount=flink-session-cluster:flink

啟動session集群:
4、./bin/kubernetes-session.sh \
 -Dkubernetes.namespace=flink-session-cluster \
-Dkubernetes.jobmanager.service-account=flink \
 -Dkubernetes.cluster-id=flink-session-cluster \
 -Dkubernetes.rest-service.exposed.type=NodePort  \
-Dkubernetes.container.image=flink:1.14.2

flink on native kubernetes session模式:提交任務示例
./bin/flink run -d --target kubernetes-session  \
-Dkubernetes.namespace=flink-session-cluster  \
-Dkubernetes.cluster-id=flink-session-cluster \
 -Dkubernetes.jobmanager.service-account=flink \
-Dkubernetes.rest-service.exposed.type=NodePort \
/opt/flink-1.14.2/examples/batch/WordCount.jar

總結

Flink on K8s :

優點:

Flink 在 K8s 上最簡單的方式是以 Standalone 方式進行部署,這種方式部署的好處在于不需要對 Flink 做任何改動,同時 Flink 對 K8s 集群是無感知的,通過外部手段即可讓 Flink 運行起來,

缺點:

  • 無論 Operator、Helm Chart 或者是直接使用 Kubectl Yaml 的方式,Flink 都感知不到 K8s 的存在,
  • 目前主要使用靜態的資源分配,需要提前確認好需要多少個 TaskManager,如果 Job 的并發需要做一些調整,TaskManager 的資源情況必須相應的跟上,否則任務無法正常執行,
  • 用戶需要對一些 Container、Operator 或者 K8s 有一些最基本的認識,這樣才能保證順利將 Flink 運行到 K8s 之上,
  • 對于批處理任務,或者想在一個 Session 里提交多個任務不太友好,無法實時申請資源和釋放資源,因為 TaskManager 的資源是固定的,批處理任務可能會分多個階段去運行,需要去實時地申請資源、釋放資源,當前也無法實作,如果需要在一個 Session 里跑多個 Job 并且陸續運行結束當前也無法實作,
  • 如果維持一個比較大的 Session Cluster,可能會資源浪費,但如果維持的 Session Cluster 比較小,可能會導致 Job 跑得慢或者是跑不起來,

基于這幾點,社區推進了一個 Native 的集成方案,讓Flink 原生的感知到下層 Cluster 的存在,Native 是相對于 Flink 而言的,借助 Flink 的命令就可以達到自治的一個狀態,不需要引入外部工具就可以通過 Flink 完成任務在 K8s 上的運行,

生產環境上推薦:

Flink on YARN(pre-job、application)、Flink on Native Kubernetes Appliation;

問題

Flink on Kubernetes 需考慮的問題:

日志問題

日志需要通過k8s的pod日志排查,如果出現節點宕機,pod飄移到別的節點,日志獲取困難,

應用jar包問題

flink on k8s的application模式需要將jar包以及依賴放在鏡像里啟動,

應用依賴問題

有依賴的任務,無法通過客戶端獲取資訊,k8s不支持pre-job模式,

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/546661.html

標籤:其他

上一篇:MySQL學習筆記-事務

下一篇:分享10個高級sql寫法

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:33:24 more
  • MySQL中binlog備份腳本分享

    關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......

    uj5u.com 2023-04-20 08:28:06 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:27:27 more
  • 快取與資料庫雙寫一致性幾種策略分析

    本文將對幾種快取與資料庫保證資料一致性的使用方式進行分析。為保證高并發性能,以下分析場景不考慮執行的原子性及加鎖等強一致性要求的場景,僅追求最終一致性。 ......

    uj5u.com 2023-04-20 08:26:48 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:26:35 more
  • 云時代,MySQL到ClickHouse資料同步產品對比推薦

    ClickHouse 在執行分析查詢時的速度優勢很好的彌補了MySQL的不足,但是對于很多開發者和DBA來說,如何將MySQL穩定、高效、簡單的同步到 ClickHouse 卻很困難。本文對比了 NineData、MaterializeMySQL(ClickHouse自帶)、Bifrost 三款產品... ......

    uj5u.com 2023-04-20 08:26:29 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:25:13 more
  • Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)

    Redis 報錯“OutOfDirectMemoryError(堆外記憶體溢位) ”問題如下: 一、報錯資訊: 使用 Redis 的業務介面 ,產生 OutOfDirectMemoryError(堆外記憶體溢位),如圖: 格式化后的報錯資訊: { "timestamp": "2023-04-17 22: ......

    uj5u.com 2023-04-20 08:24:54 more
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:24:03 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:23:11 more