Flink部署與應用——部署方式介紹

引入

我們通過Flink相關論文的介紹,對于Flink已經有了初步理解,這里簡單的梳理一下Flink常見的部署方式。

Flink 的部署方式?

StandAlone模式

介紹

StandAlone模式是Flink框架自帶的分布式部署模式,不依賴其他的資源調度框架,特點:

  • 分布式多臺物理主機部署
  • 依賴于Java8或Java11JDk環境
  • 僅支持Session模式提交Job
  • 支持高可用配置

但是有以下缺點:

  • 資源利用彈性不夠(資源總量是定死的;job退出后也不能立刻回收資源)
  • 資源隔離度不夠(所有job共享集群的資源)
  • 所有job共用一個jobmanager,負載過大
  • 只能運行Flink程序,不能能運行其他的編程模型

OnYarn模式

介紹

YARN是一個通用的資源調度框架,特點是:

  • 可以運行多種編程模型,例如MR、Storm、Spark、Flink等
  • 性能穩定,運維經驗豐富
  • 靈活的資源分配和資源隔離
  • 每提交一個application都會有一個專門的ApplicationMater(JobManager)

ResouManager(NM):

  • 負責處理客戶端請求
  • 監控NodeManager
  • 啟動和監控APPlicationMaster
  • 資源的分配和調度

NodeManager:

  • 管理單個Worker節點上的資源
  • 處理來自ResourceManager的命令
  • 處理來自ApplicationMaster的命令
  • 匯報資源狀態

ApplicationMaster:

  • 負責數據的切分
  • 為應用申請計算資源,并分配給Task
  • 任務的監控與容錯
  • 運行在Worker節點上?

Container:

  • 資源抽象,封裝了節點上的多維度資源,如CPU,內存,網絡資源等

Flink On Yarn 的三種模式

Flink程序可以運行為以下3種模式:

  • Application Mode【生產中建議使用的模式】:每個job獨享一個集群,job退出集群則退出,用戶類的main方法在集群上運行
  • Per-Job Mode:每個job獨享一個集群,job退出集群則退出,用戶類的main方法在client端運行;(大job,運行時長很長,比較合適;因為每起一個job,都要去向yarn申請容器啟動jm,tm,比較耗時)
  • Yarn Session Mode:多個job共享同一個集群<jobmanager/taskmanager>、job退出集群也不會退出,用戶類的main方法在client端運行;(需要頻繁提交大量小job的場景比較適用;因為每次提交一個新job的時候,不需要去向yarn注冊應用)

上述3種模式的區別點在:
集群的生命周期和資源的隔離保證
用戶類的main方法是運行在client端,還是在集群端

yarn application模式提交

bin/flink run-application -t yarn-application \
-yjm 1024 -yqu default -ys 2 \
-ytm 1024 -p 4 \
-c com.chaos.flink.java.KafkaSinkYarn /root/flink_test-1.0.jar
  • bin/flink run-application :這是用于運行 Flink 應用程序的命令入口。
  • -t yarn-application :指定在 YARN 集群上運行應用程序。
  • -yjm 1024 :設置 JobManager 的內存大小為 1024 MB。
  • -yqu default :指定 YARN 隊列的名稱為 default。
  • -ys 2 :設置 YARN 服務,這里可能是指 YARN 的一些特定配置,比如在 YARN 上運行的實例數量。
  • -ytm 1024 :設置 TaskManager 的內存大小為 1024 MB。
  • -p 4 :設置 Flink 作業的并行度為 4。
  • -c com.chaos.flink.java.KafkaSinkYarn :指定主類的完整類名為 com.chaos.flink.java.KafkaSinkYarn,這是應用程序的入口類。
  • /root/flink_test-1.0.jar :指定要運行的 Flink 應用程序的 JAR 包路徑。?

yarn perJob模式提交

Yarn-Per-Job 模式:每個作業單獨啟動集群,隔離性好,JM(JobManager) 負載均衡,main 方法在客戶端執行。在 per-job 模式下,每個 Job 都有一個 JobManager,每個TaskManager 只有單個 Job。 ?

特點: 一個任務會對應一個 Job,每提交一個作業會根據自身的情況,都會單獨向 yarn申請資源,直到作業執行完成,一個作業的失敗與否并不會影響下一個作業的正常提交和運行。獨享 Dispatcher 和 ResourceManager,按需接受資源申請;適合規模大長時間運行的作業。

提交命令 (申請容器啟動flink集群以及提交job,是合二為一的)

bin/flink run -m yarn-cluster -yjm 1024 \
-ytm 1024 -yqu default -ys 2 ? -p 4 \
-c com.chaos.TaskDemo ?/root/flink_test-1.0.jar
  • -m:master的運行模式
  • -yjm:JobManager的所在Yarn容器的內存大小
  • -ytm:TaskManager的所在Yarn容器額內存大小
  • -yqu:Yarn任務隊列的名稱
  • -ys:每個TaskManager的slot數量
  • -p:并行度
  • -c:main方法全類名

yarn session模式提交

Yarn-Session 模式:所有作業共享集群資源,隔離性差,JM 負載瓶頸,main 方法在客戶端執行。適合執行時間短,頻繁執行的短任務,集群中的所有作業 只有一個 JobManager,另外,Job 被隨機分配給 TaskManager ?

特點: Session-Cluster 模式需要先啟動集群,然后再提交作業,接著會向 yarn 申請一塊空間后,資源永遠保持不變。如果資源滿了,下一個作業就無法提交,只能等到 yarn 中的其中一個作業執行完成后,釋放了資源,下個作業才會正常提交。所有作業共享 Dispatcher 和 ResourceManager;共享資源;適合規模小執行時間短的作業。

  1. 基本操作命令
    # 提交命令:
    bin/yarn-session.sh –help# 停止命令:
    yarn application -kill application_1550836652097_0002
  2. 具體操作步驟
    1. 先開辟資源啟動session模式集群
      # 老版本:?
      bin/yarn-session.sh -n 3 -jm 1024 -tm 1024
      # -n --> 指定需要啟動多少個Taskmanager# 新版本:?
      bin/yarn-session.sh -jm 1024 ?-tm 1024 ?-s 2 ?-m yarn-cluster -ynm hello -qu default?-jm:jobmanager memory ?
      -tm:taskmanager memory
      -m yarn-cluster:集群模式(yarn集群模式)
      -s:規定每個taskmanager上的taskSlot數(槽位數)
      -nm:自定義appliction名稱
      -qu:指定要提交到的yarn隊列
    2. 啟動的服務進程
      YarnSessionClusterEntrypoint(AppMaster,即JobManager)
      注意:此刻并沒有taskmanager,也就是說,taskmanager是在后續提交job時根據資源需求動態申請容器啟動的。
    3. 向已運行的session模式集群提交job
      bin/flink run -d -yid application_1550579025929_62420 -p 4 -c com.chaos.flink.java.TaskDemo /root/flink_test-1.0.jar

Flink On Yarn 的優劣勢

優勢:

  • 與現有大數據平臺無縫對接(Hadoop2.4+)
  • 部署集群與任務提交都非常簡單
  • 資源管理統一通過Yarn管理,提升整體資源利用率類
  • 基于Native方式,TaskManager資源按需申請和啟動,防止資源浪費
  • 容錯保證:借助于Hadoop Yarn提供的自動failover機制,能保證JobManager,TaskManager節點異常恢復

劣勢:

  • 資源隔離問題,尤其是網絡資源的隔離,Yarn做的還不夠完善
  • 離線和實時作業同時運行相互干擾等問題需要重視
  • Kerberos認證超期問題導致Checkpoint無法持久化

On?Kubernetes模式

介紹

Flink on Kubernetes 是將 Apache Flink 部署在 Kubernetes 集群上的一種方式,使用戶能夠利用 Kubernetes 的強大功能進行資源管理、彈性伸縮和高可用性管理。

Master節點:

  • 負責整個集群的管理,資源管理
  • 運行APIServer,ControllerManager,Scheduler服務
  • 提供Etcd高可用鍵值存儲服務,用來保存Kubernetes集群所有對象的狀態信息和網絡信息

Node:

  • 集群操作的單元,Pod運行宿主機
  • 運行業務負載,業務負載會以Pod的形式運行

Kubelet:

  • 運行在Node節點上,維護和管理該Node上的容器

Container Runtime:

  • Docker容器運行環境,負責容器的創建和管理

Pod:

  • 運行在Node節點上,多個相關Container的組合
  • Kubunetes創建和管理的最小單位

核心概念

  • ReplicationController(RC):RC是K8s集群中最早的保證Pod高可用的API對象,通過監控運行中的Pod來保證集群中運行指定數目的Pod副本。
  • Service:Service是對一組提供相同功能的Pods的抽象,并為它們提供一個統一的入口。
  • PersistentVolume(PV):容器的數據都是非持久化的,在容器消亡以后數據也跟著丟失,所以Docker提供了Volume機制以便將數據持久化存儲。
  • ConfigMap:ConfigMap用于保存配置數據的鍵值對,可以用來保存單個屬性,也可以用來保存配置文件。

Flink On Kubunetes的三種模式

Session 模式:啟動一個長期運行的 Flink 集群,所有作業共享該集群資源。適合多個作業需要共享資源的場景。

Application 模式:為每個作業啟動一個獨立的 Flink 集群,作業之間資源隔離,互不影響。

Native Kubernetes 模式:Flink 原生支持 Kubernetes,通過 Kubernetes API 進行資源管理和調度,能夠動態分配和釋放 TaskManager。

Flink On Kubunetes的優缺點

優點:

  • 強大的資源管理與彈性伸縮:Kubernetes 可根據作業負載動態分配和釋放資源,實現 Flink 集群的彈性伸縮。這提高了資源利用率,降低了成本,尤其在業務波動時可快速調整資源以滿足需求。

  • 高可用性與容錯能力:Kubernetes 能自動重啟故障 Pod 并重新調度 TaskManager,確保 Flink 作業持續運行,保障數據處理的可靠性和穩定性。

  • 深度云原生集成:Flink on Kubernetes 與云原生生態系統深度融合,可與云服務(如對象存儲、消息隊列)無縫協作,便于構建完整的云原生數據處理解決方案。

  • 簡化的部署與運維:通過 Flink Kubernetes Operator 提供的抽象接口,用戶可以更高效地部署和管理 Flink 集群,減少手動操作,降低運維負擔。

  • 多租戶支持:Kubernetes 的命名空間功能可實現多租戶隔離,為多團隊或項目共用集群提供了便利,提高了資源的隔離性和安全性。

缺點:

  • 部署復雜度增加:與在專用集群上部署 Flink 相比,Flink on Kubernetes 需要熟悉 Kubernetes 的概念和工具(如 Pod、Deployment、Service 等),增加了學習曲線和部署前的準備工作。

  • 資源管理的潛在挑戰:Kubernetes 的資源調度策略可能與 Flink 的需求不完全匹配,導致資源分配效率降低。例如,在某些情況下,Kubernetes 的默認調度算法可能無法滿足 Flink 對數據本地性的要求,影響作業性能。

  • 性能開銷:在 Kubernetes 上運行 Flink 會引入額外的性能開銷,包括容器的啟動時間和 Kubernetes 的調度延遲。此外,如果 Kubernetes 集群的資源緊張,可能導致 Flink 作業的性能下降。

  • 網絡配置復雜性:在 Kubernetes 集群中,網絡配置可能較為復雜,需要確保 Flink 的各個組件之間能夠正確通信。

  • 長期運行作業的資源管理:對于長期運行的 Flink 作業,需要持續監控和管理資源使用情況。Kubernetes 的資源配額和限制機制可以幫助控制資源使用,但需要合理配置以避免對作業的性能產生負面影響。

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/77160.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/77160.shtml
英文地址,請注明出處:http://en.pswp.cn/web/77160.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【智慧城市】新中地GIS開發實訓:基于 Vue 框架的武漢智慧旅游系統

首頁 地球自轉頁 控制臺頁 景點信息頁 天氣預報頁 路線規劃頁 查詢頁 AI問答頁 熱力圖頁 測量頁 來源&#xff1a; 【智慧城市】新中地GIS開發實訓&#xff1a;優秀學生項目作品&#xff08;58&#xff09;基于 Vue 框架的武漢智慧旅游系統

C++入侵檢測與網絡攻防之網絡嗅探以及ARP攻擊

目錄 1.tcpdump基本使用 2.tcpdump條件過濾 3.wireshark介紹 4.wireshark的介紹 5.tcp握手揮手分析 6.telnet服務的介紹和部署 7.復習 8.telnet服務的報文嗅探 9.網絡嗅探基礎 10.arp協議的解析 11.arp攻擊原理以及試驗環境 12.arp實驗以及防御方式 1.tcpdump基本使…

【數據可視化-28】2017-2025 年每月產品零售價數據可視化分析

&#x1f9d1; 博主簡介&#xff1a;曾任某智慧城市類企業算法總監&#xff0c;目前在美國市場的物流公司從事高級算法工程師一職&#xff0c;深耕人工智能領域&#xff0c;精通python數據挖掘、可視化、機器學習等&#xff0c;發表過AI相關的專利并多次在AI類比賽中獲獎。CSDN…

系統與網絡安全------彈性交換網絡(3)

資料整理于網絡資料、書本資料、AI&#xff0c;僅供個人學習參考。 STP協議 環路的危害 單點故障 PC之間的互通鏈路僅僅存在1個 任何一條鏈路出現問題&#xff0c;PC之間都會無法通信 解決辦法 提高網絡可靠性 增加冗余/備份鏈路 增加備份鏈路后交換網絡上產生二層環路 …

廣州 3D 展廳開啟企業展示新時代?

為了突破傳統展廳的局限&#xff0c;滿足企業日益增長的展示需求&#xff0c;3D 展廳應運而生。3D 展廳是利用虛擬現實&#xff08;VR&#xff09;、增強現實&#xff08;AR&#xff09;和三維建模等先進技術&#xff0c;構建出的一個高度逼真的數字化展示空間 。它打破了傳統展…

C++初登門檻

多態 一、概念 多態是指不同對象對同一消息產生不同響應的行為。例如&#xff0c;藍牙、4G、Wi-Fi 對“發送數據”指令有不同的具體實現。 二、核心理解 本質&#xff1a;通過基類指針或引用操作子類對象&#xff0c;實現運行時動態綁定。 表現形式&#xff1a; 接口統一&a…

文件上傳詳細版

文件上傳造成因素&#xff1a; 文件路徑過濾不嚴格&#xff0c;可能通過遍歷目錄來獲得文件&#xff0c;也可能通過文件上傳對重要文件案進行覆蓋&#xff0c;還可能對文件拓展名和文件類型過濾不嚴格&#xff0c;可以上傳任意文件到web公開目錄上&#xff0c;進而遠程控制服務…

華為網路設備學習-19 IGP路由專題-路由策略

一、 二、 注意&#xff1a; 當該節點匹配模式為permit下時&#xff0c;參考if else 當該節點匹配模式為deny下時&#xff1a; 1、該節點中的apply子語句不會執行。 2、如果滿足所有判斷&#xff08;if-match&#xff09;條件時&#xff0c;拒絕該節點并跳出&#xff08;即不…

智能指針之設計模式4

前面的文章介紹了使用工廠模式來封裝智能指針對象的創建過程&#xff0c;下面介紹一下工廠類 enable_shared_from_this的實現方案。 4、模板方法模式 在前面的文章分析過&#xff0c;enable_shared_from_this<T>類是一個工廠基類&#xff0c;提供的工廠方法是shared_f…

【Nova UI】十、打造組件庫第一個組件-圖標組件(下):從.svg 到 SVG Vue 組件的高效蛻變?

序言 在組件庫開發的精彩旅程中&#x1f680;&#xff0c;我們已經成功打造并完善了圖標組件體系&#xff0c;賦予其強大的功能和豐富的表現力&#x1f389;。然而&#xff0c;隨著業務版圖的不斷擴張&#x1f310;&#xff0c;手動逐個編寫 SVG Vue 組件的傳統方式&#xff0…

Golang | 倒排索引

文章目錄 倒排索引的設計倒排索引v0版實現 倒排索引的設計 通用搜索引擎 v.s. 垂直搜索引擎&#xff1a; 通用搜索引擎&#xff1a;什么都可以搜索&#xff0c;更加智能化垂直搜索引擎&#xff1a;只能搜自家數據庫里面的內容&#xff0c;一般都帶著搜索條件&#xff0c;搜索一…

Windows 10 上運行 Ollama 時遇到 llama runner process has terminated: exit status 2

在 Windows 10 上運行 Ollama 時遇到 llama runner process has terminated: exit status 2 錯誤&#xff0c;可能是由多種原因引起的。以下是逐步解決方案&#xff1a; 1. 檢查 Ollama 服務狀態 按 Win R 輸入 services.msc&#xff0c;找到 Ollama 服務&#xff0c;確保其狀…

PCI 總線學習筆記(五)

PCI 總線學習系列&#xff0c;參考自 技術大牛博客&#xff1a; PCIe 掃盲系列博文連載目錄篇 書籍&#xff1a;王齊老師的《PCI Express 體系結構導讀》 下面的文章中加入了自己的一些理解和實際使用中遇到的一些場景&#xff0c;供日后查詢和回憶使用 PCI 總線定義了兩類配置…

Spring Cloud Alibaba VS Spring Cloud

??Spring Cloud Alibaba 與 Spring Cloud 組件對比? ??服務發現與注冊中心? 功能???Spring Cloud???Spring Cloud Alibaba?對比說明??核心組件?EurekaNacosNacos 支持動態配置管理、健康檢查更靈活&#xff0c;且提供 DNS 服務發現能力。????健康檢查??…

Java—— 常見API介紹 第五期

JDK8以后新增的時間相關類 Date類ZoneId&#xff1a;時區Instant&#xff1a;時間戳ZoneDateTime&#xff1a;帶時區的時間 日期格式化類 SimpleDateFormat DateTimeFormatter&#xff1a;用于時間的格式化和解析 日歷類 Calendar LocalDate&#xff1a;年、月、日LocalTime…

Java與Kotlin在Android開發中的全面對比分析

趨勢很重要 語言發展背景與現狀 Android操作系統自2008年正式發布以來&#xff0c;Java長期作為其主要的開發語言。這種選擇源于Java語言的跨平臺特性、成熟的生態系統以及廣泛開發者基礎。然而&#xff0c;隨著移動開發需求的快速演變&#xff0c;Java在Android開發中逐漸暴…

第一部分:git基本操作

目錄 1、git初識 1.1、存在的問題 1.2、版本控制器 1.3、git安裝 1.3.1、CentOS平臺 1.3.2、ubuntu平臺 2、git基本操作 2.1、創建倉庫 2.2、配置git 3、工作區、暫存區、版本庫 4、基本操作 4.1、場景一 4.2、場景二 4.3、修改文件 5、版本回退 6、撤銷修改 …

正則表達式與python使用

一、Python正則表達式基礎 1. 導入模塊 Python通過 re 模塊實現正則表達式功能&#xff0c;需先導入模塊&#xff1a; import re2. 核心語法 普通字符&#xff1a;直接匹配字面值&#xff08;如 a 匹配字符 a&#xff09;。元字符&#xff1a; \d&#xff1a;匹配數字&…

從FP32到BF16,再到混合精度的全景解析

筆者做過目標檢測模型、超分模型以及擴散生成模型。其中最常使用的是單精度FP32、半精度FP16、BF16。 雙精度"FP64"就不說了&#xff0c;不太會用到。 #1. 單精度、半精度和混合精度 單精度&#xff08;FP32&#xff09;、半精度&#xff08;FP16&#xff09;和混合…

Hot100方法及易錯點總結2

本文旨在記錄做hot100時遇到的問題及易錯點 五、234.回文鏈表141.環形鏈表 六、142. 環形鏈表II21.合并兩個有序鏈表2.兩數相加19.刪除鏈表的倒數第n個節點 七、24.兩兩交換鏈表中的節點25.K個一組翻轉鏈表(坑點很多&#xff0c;必須多做幾遍)138.隨機鏈表的復制148.排序鏈表 N…