【Flink精講】Flink性能調優:CPU核數與并行度

常見問題

舉個例子

提交任務命令:

bin/flink run \
-t yarn-per-job \
-d \
-p 5 \ 指定并行度
-Dyarn.application.queue=test \ 指定 yarn 隊列
-Djobmanager.memory.process.size=2048mb \ JM2~4G 足夠
-Dtaskmanager.memory.process.size=4096mb \ 單個 TM2~8G 足夠
-Dtaskmanager.numberOfTaskSlots=2 \ 與容器核數 1core: 1slot 或 2core: 1slot
-c com.atguigu.flink.tuning.UvDemo \
/opt/module/flink-1.13.1/myjar/flink-tuning-1.0-SNAPSHOT.jar

并行度為5,每個任務占用槽數為2,則需要申請3個容器(2*3=6),JobManager需要一個容器,共需要4個容器。6個vcore+JobManager的1個vcore共7個vcore。而實際上是4個容器,4個vcore,這是為什么呢?

實際運行效果:?

Yarn調度器設置

這跟yarn的調度器設置相關,找到capacity-scheduler.xml

  • default的方式只會參考內存來申請容器,不會考慮cpu的需求。
  • 調整為下面domian的方式,會綜合考慮內存+CPU的需求來申請資源。

調整后運行效果:

刷新一下

?指定容器核心數

bin/flink run \
-t yarn-per-job \
-d \
-p 5 \
-Drest.flamegraph.enabled=true \
-Dyarn.application.queue=test \
-Dyarn.containers.vcores=3 \
-Djobmanager.memory.process.size=1024mb \
-Dtaskmanager.memory.process.size=4096mb \
-Dtaskmanager.numberOfTaskSlots=2 \
-c com.atguigu.flink.tuning.UvDemo \
/opt/module/flink-1.13.1/myjar/flink-tuning-1.0-SNAPSHOT.jar

一個容器3個核,2個slot,不是1:1的關系也可以。

slot主要隔離內存,不隔離cpu資源。

solt還有一個共享機制,一個slot可以同時跑多個task,一個solt可以不只使用一個線程。

通常讓系統自動來設置,通常跟solt數1比1

并行度設置

  1. 配置文件:默認并行度,默認1
  2. 提交參數:如-p 5
  3. 代碼env
  4. 代碼算子

優先級下面的高。

全局并行度計算

????????開發完成后,先進行壓測。任務并行度給 10 以下,測試單個并行度的處理上限。然后
總QPS / 單并行度的處理能力 = 并行度
QPS使用高峰期的。
????????開發完 Flink 作業,壓測的方式很簡單,先在 kafka 中積壓數據,之后開啟 Flink 任務,
出現反壓,就是處理瓶頸。相當于水庫先積水,一下子泄洪。
????????不能只從 QPS 去得出并行度,因為有些字段少、邏輯簡單的任務,單并行度一秒處理
幾萬條數據。 而有些數據字段多,處理邏輯復雜, 單并行度一秒只能處理 1000 條數據。
最好根據高峰期的 QPS 壓測, 并行度*1.2 倍,富余一些資源。

查看單個任務的輸出量:numRecordsOutPerSecond,單并行度7000條/秒,生成環境高峰期的qps:30000/s,30000/7000 = 4.x,并行度5,再乘以個冗余1.2 = 6個

如果數據源是kafka,可以按kafka分區數來設置并行度。?

大部分情況下并行度10以下即可。

Source 端并行度的配置

????????數據源端是 Kafka, Source 的并行度設置為 Kafka 對應 Topic 的分區數。
????????如果已經等于 Kafka 的分區數, 消費速度仍跟不上數據生產速度, 考慮下 Kafka 要擴
大分區, 同時調大并行度等于分區數。

????????Flink 的一個并行度可以處理一至多個分區的數據,如果并行度多于 Kafka 的分區數,
那么就會造成有的并行度空閑,浪費資源。

Transform 端并行度的配置

Keyby 之前的算子

一般不會做太重的操作,都是比如 map、 filter、 flatmap 等處理較快的算子,并行度
可以和 source 保持一致。

Keyby 之后的算子

如果并發較大,建議設置并行度為 2 的整數次冪,例如: 128、 256、 512;
小并發任務的并行度不一定需要設置成 2 的整數次冪;
大并發任務如果沒有 KeyBy,并行度也無需設置為 2 的整數次冪;

Sink 端并行度的配置

????????Sink 端是數據流向下游的地方,可以根據 Sink 端的數據量及下游的服務抗壓能力進行評估。 如果 Sink 端是 Kafka,可以設為 Kafka 對應 Topic 的分區數。
????????Sink 端的數據量小, 比較常見的就是監控告警的場景,并行度可以設置的小一些。
????????Source 端的數據量是最小的,拿到 Source 端流過來的數據后做了細粒度的拆分,數據量不斷的增加,到 Sink 端的數據量就非常大。那么在 Sink 到下游的存儲中間件的時候就需要提高并行度。
????????另外 Sink 端要與下游的服務進行交互,并行度還得根據下游的服務抗壓能力來設置,如果在 Flink Sink 這端的數據量過大的話, 且 Sink 處并行度也設置的很大,但下游的服務完全撐不住這么大的并發寫入,可能會造成下游服務直接被寫掛,所以最終還是要在 Sink處的并行度做一定的權衡。

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

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

相關文章

Android 性能優化--APK加固(1)混淆

文章目錄 為什么要開啟混淆如何開啟代碼混淆如何開啟資源壓縮代碼混淆配置代碼混淆后,Crash 問題定位結尾 本文首發地址:https://h89.cn/archives/211.html 最新更新地址:https://gitee.com/chenjim/chenjimblog 為什么要開啟混淆 先上一個 …

【會議征稿通知】第十屆人文學科與社會科學研究國際學術會議(ICHSSR 2024)

第十屆人文學科與社會科學研究國際學術會議(ICHSSR 2024) 2024 10th International Conference on Humanities and Social Science Research 第十屆人文學科與社會科學研究國際學術會議(ICHSSR 2023)將于2024年4月26-28日在中國廈門隆重舉行。會議主要…

工廠生產效率如何提升?這8個重點你不得不看!

企業的競爭本質上就是效率與成本的競爭(當然是保證產品質量的前提下),如何持續不斷地提高生產效率是企業永續發展的關鍵問題,提高生產效率也是降低制造成本的根本途徑。 當然,我們必須嚴格根據工藝標準來操作&#xf…

如何通過ip查詢用戶的歸屬地

背景 最近公司做了一些營銷活動,投入資金進行了流量推廣,pv、UV都做了統計。老板說,我要看下用戶的區域分布的數據。 以前的文章我講過,pv、UV如何統計?我們是基于ip進行統計的。用的ip能獲取到,那通過ip…

JavaScript繼承

JavaScript繼承 1、JS 的繼承到底有多少種實現方式呢? 2、ES6 的 extends 關鍵字是用哪種繼承方式實現的呢? 繼承種類 原型鏈繼承 function Parent1() {this.name parentlthis.play [1, 2, 3] }function Child1() {this.type child2 }Child1.prototype new Parent1(…

應用穩定性優化1:ANR問題全面解析

閃退、崩潰、無響應、重啟等是應用穩定性常見的問題現象,穩定性故障大體可歸類為ANR/凍屏、Crash/Tombstone、資源泄露三大類。本文通過對三類故障的產生原因、故障現象、觸發機制及如何定位等,展開深度解讀。 本文將詳解ANR類故障,并通過一…

寶塔php站點設置偽靜態規則 訪問 a.com 時候跳轉到 a.com/b.html

要在寶塔 PHP 站點中設置偽靜態規則,實現訪問a.com時跳轉到a.com/b.html,可以按照以下步驟進行操作: 打開寶塔面板并登錄到你的服務器管理界面。進入網站設置頁面,找到你要設置偽靜態規則的 PHP 站點。在站點設置中,找…

已解決System.ServiceModel.EndpointNotFoundException端點未找到異常的正確解決方法,親測有效!!!

已解決System.ServiceModel.EndpointNotFoundException端點未找到異常的正確解決方法,親測有效!!! 目錄 問題分析 出現問題的場景 報錯原因 解決思路 解決方法 總結 在開發和使用基于Windows Communication Foundation (WC…

【前端素材】推薦優質后臺管理系統cassie平臺模板(附源碼)

一、需求分析 1、系統定義 后臺管理系統是一種用于管理網站、應用程序或系統的管理界面,通常由管理員和工作人員使用。它提供了訪問和控制網站或應用程序后臺功能的工具和界面,使其能夠管理用戶、內容、數據和其他各種功能。 2、功能需求 后臺管理系…

解鎖AI大模型秘籍:未來科技的前沿探索

在當今這個技術高速發展的時代,人工智能(AI)已經成為了我們生活中不可或缺的一部分。從簡單的個人助手到復雜的數據分析和決策制定,AI的應用范圍日益擴大,其目的是為了讓我們的生活變得更加智能化。本文旨在探討AI如何…

【單片機學習的準備】

文章目錄 前言一、找一個視頻是二、畫圖軟件三、裝keil5 仿真protues總結 前言 提示:這里可以添加本文要記錄的大概內容: 項目需要: 提示:以下是本篇文章正文內容,下面案例可供參考 一、找一個視頻是 https://www.b…

一文了解Lint工具的優缺點,以及它與高級靜態分析工具的比較

避免軟件缺陷是所有開發者的共同追求,因為一旦出現錯誤,可能導致用戶體驗下降,甚至威脅到關鍵系統的安全。不論您正在開發何種類型的程序,避免這些缺陷都是至關重要的。這就是為什么許多開發團隊都依賴Lint。 什么是Linting&#…

農產品質量追溯系統—簡介

概要 農產品質量安全事關廣大人民群眾的食用安全和身體健康。解決農產品質量安全問題,需要從源頭開始抓好、抓實農產品安全監管工作。通過建立從產地到市場的全程質量控制系統和追溯制度,對農產品產地環境、生產過程、產品檢測、包裝盒標識等關鍵環節進行監督管理,提高廣大…

Kubernetes(k8s第一部分)

這個技術一定會成為以后企業技術的標準 尙硅谷的王陽這個部分這個講的特別好,可以自己去看 1,發展經歷 阿里云iaas Infrastructure as a Service 平臺及服務paas新浪云 platform as a service(號稱免運維)(docker是下一代的標準&#x…

模板初階的補充和string一些函數的用法

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄 前言 模板初階的補充 一、C語言中的字符串 二、標準庫中的string類 2.1 string類(了解) 2.2 string類的常用接口說明(注意下面我只講解最常用的接口&…

SpringBoot中自動裝配機制

自動裝配簡單來說,就是自動去把第三方組件的Bean裝載到IoC容器里面,不需要開發人員再去寫Bean相關的一個配置。在Spring Boot的應用里面,只需要在啟動類上去加上Spring Boot Application注解就可以去實現自動裝配,Spring Boot App…

精品ssm的社區團購系統購物商城小程序

《[含文檔PPT源碼等]精品基于ssm的社區團購系統[包運行成功]》該項目含有源碼、文檔、PPT、配套開發軟件、軟件安裝教程、項目發布教程、包運行成功! 軟件開發環境及開發工具: Java——涉及技術: 前端使用技術:HTML5,CSS3、Jav…

Sophon AutoCV推動AI應用從模型生產到高效落地

隨著技術市場和應用方向的逐漸成熟,人工智能與各行各業的結合和落地逐漸進入了深水區。 雖然由于行業規模化和應用普及度的限制,人工智能在“傳統”行業的落地不如消費互聯網行業,但是借助人工智能為“傳統”行業的發展注入新能量一直是相關…

流程的Python(十五)-上下文管理器和else塊

一、核心要義 1. for, while和try語句的else字句 2. with語句和上下文管理器 二、代碼示例 1、else塊 #!/usr/bin/env python # -*- coding: utf-8 -*- # Time : 2024/2/28 20:14 # Author : Maple # File : 01-else塊.py # Software: PyCharm""" 用…