当前位置: 首页 > news >正文

flink使用 DominantResourceCalculator (主导资源计算器)策略并指定容器 vcore 数指定 yarn 容器的 vcore 数,提交.

在 Apache Flink 中使用DominantResourceCalculator策略配置 YARN 容器的 vCore 数,需通过以下步骤实现:

JobManager 1 个,占用 1 个容器,vcore = 1
TaskManager 3 个,占用 3 个容器,每个容器 vcore = 3,总 vcore = 3*3 = 9


1. 理解 DominantResourceCalculator

该策略基于主导资源公平性(DRF)算法,计算公式为: $$ \text{主导资源占比} = \max\left( \frac{\text{任务CPU需求}}{\text{集群总CPU}}, \frac{\text{任务内存需求}}{\text{集群总内存}} \right) $$ 资源分配优先满足主导资源占比更高的任务。


2. 关键配置参数

在 Flink 的flink-conf.yaml中配置:

# 启用 DominantResourceCalculator yarn.scheduler.capacity.resource-calculator: org.apache.hadoop.yarn.util.resource.DominantResourceCalculator # 指定容器 vCore 数量 yarn.containers.vcores: 4 # 设为实际需要的核心数

3. 提交任务时的资源配置

在提交 Flink 作业时指定资源需求(以命令行示例):

./bin/flink run \ -m yarn-cluster \ -ys 2 \ # 每个 TaskManager 的 Slot 数 -yjm 2048 \ # JobManager 内存 (MB) -ytm 4096 \ # TaskManager 内存 (MB) -yD yarn.containers.vcores=4 \ # 显式覆盖配置 ./examples/streaming/WordCount.jar

4. YARN 侧的配置验证

在 YARN 的capacity-scheduler.xml中确保:

<property> <name>yarn.scheduler.capacity.resource-calculator</name> <value>org.apache.hadoop.yarn.util.resource.DominantResourceCalculator</value> </property>

5. 资源分配逻辑

  • Flink 根据yarn.containers.vcores向 YARN 申请容器。
  • YARN 使用 DRF 策略比较各任务的资源占比: $$ \text{CPU占比} = \frac{\text{vCore请求}}{\text{集群总vCore}}, \quad \text{内存占比} = \frac{\text{内存请求}}{\text{集群总内存}} $$
  • 选择 $\max(\text{CPU占比}, \text{内存占比})$ 最大的任务优先分配。

6. 性能调优建议

  • vCore 与物理核心:若物理核心超线程(如 1:2),建议设置: $$ \text{yarn.containers.vcores} = 2 \times \text{物理核心数} $$
  • 避免过度分配:单个容器的 vCore 不应超过 YARN 节点总 vCore 的 70%,即满足: $$ \text{单容器vCore} \leq 0.7 \times \text{yarn.nodemanager.resource.cpu-vcores} $$

通过上述配置,Flink 作业将基于 DRF 策略在 YARN 集群中高效分配 vCore 资源。

http://www.cnnetsun.cn/news/18749.html

相关文章:

  • 企业级应用:Dify离线部署在金融行业的实践案例
  • Anystyle智能引用解析工具:科研文献管理的革命性突破
  • 传统vs现代:0603封装手工焊接与自动化贴片效率对比
  • Phigros网页模拟器完整使用教程:零基础打造专属音乐游戏
  • 企业级开源协作平台部署指南:规模化团队的高效解决方案
  • Font Awesome图标定制化:从全量加载到精准裁剪的工程实践
  • np.arange vs 循环:性能对比实测与优化建议
  • Font Awesome图标字体子集化:从性能瓶颈到极致优化的实战指南
  • [N_123]基于springboot房屋租赁管理系统
  • Vue Konva实战手册:构建高效画布应用的完全攻略
  • GPTBots.ai:从零开始构建企业级AI智能体,无需代码经验
  • 洗车行业小程序源码系统一体化智能后台,让管理清晰高效
  • OPENCV(python)--初学之路(十七)二进制鲁棒独立(BRIEF)和定向快速和轮换(ORB)
  • 为什么说PHP程序员一定要学会自我慈悲?
  • Blender终极指南:如何快速导入虚幻引擎PSK和PSA文件
  • 31、深入探索EXT2文件系统:操作、遍历与实现
  • C盘爆满急救指南:安全删除虚拟内存全流程
  • 银河麒麟桌面操作系统V10 SP1 编译ffmpeg-6.1
  • VisionReward-Image终极解析:重塑AI视觉内容的质量评估范式
  • 智能获客系统深度评测与选型指南 2026五款热门获客平台
  • GPT-5.2实战评测:从“聊天“到“干活“,AI助手进化史
  • 算力直降48%:Moonlight-16B凭什么改写大模型效率规则?
  • 终极代码质量检查:TscanCode如何帮助团队提升开发效率的完整指南
  • DLT Viewer终极指南:从入门到精通的嵌入式日志分析完整教程
  • 如何快速批量下载TikTok封面:完整操作指南
  • nvm-desktop终极指南:高效管理Node.js版本控制方案
  • Django开发效率翻倍:5个必知技巧
  • 开源大模型微调与部署实战指南:从零开始掌握LLaMA Factory工具全流程
  • Windows Cleaner:5分钟彻底解决C盘空间不足的终极方案
  • Python + Ursina设计一个有趣的3D小游戏