跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
YARN容量调度器
”︁
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
= YARN容量调度器 = '''YARN容量调度器'''(Capacity Scheduler)是Apache Hadoop YARN中的一种多租户资源调度器,专为共享、多租户集群环境设计。它通过划分集群资源为多个逻辑队列(称为“容量队列”),允许不同组织或团队按需分配资源,同时保证最低资源保障和弹性扩展能力。 == 核心特性 == * '''队列层次结构''':支持树形队列划分,父队列可嵌套子队列。 * '''资源隔离''':每个队列分配固定比例的集群资源(如CPU、内存),避免资源抢占。 * '''弹性分配''':空闲资源可被其他队列临时借用,提高利用率。 * '''多租户支持''':通过ACL(访问控制列表)限制用户/组对队列的访问权限。 * '''动态配置''':支持运行时修改队列属性(需管理员权限)。 == 工作原理 == 容量调度器通过以下机制实现资源分配: # '''资源请求匹配''':应用向ResourceManager提交资源请求(如容器需求)。 # '''队列选择''':根据配置的队列层次和ACL规则,将请求路由到对应队列。 # '''资源分配''':按队列容量比例分配资源,优先满足有保障的容量,空闲资源可共享。 <mermaid> graph TD A[ResourceManager] --> B[Queue A: 40%资源] A --> C[Queue B: 60%资源] B --> D[子队列 A1: 20%] B --> E[子队列 A2: 20%] C --> F[子队列 B1: 30%] C --> G[子队列 B2: 30%] </mermaid> == 配置示例 == 以下是一个典型的{{code|capacity-scheduler.xml}}配置片段: <syntaxhighlight lang="xml"> <configuration> <!-- 定义根队列 --> <property> <name>yarn.scheduler.capacity.root.queues</name> <value>prod,dev</value> </property> <!-- 生产队列分配60%资源 --> <property> <name>yarn.scheduler.capacity.root.prod.capacity</name> <value>60</value> </property> <!-- 开发队列分配40%资源 --> <property> <name>yarn.scheduler.capacity.root.dev.capacity</name> <value>40</value> </property> <!-- 允许开发队列借用空闲资源 --> <property> <name>yarn.scheduler.capacity.root.dev.maximum-capacity</name> <value>80</value> </property> </configuration> </syntaxhighlight> == 数学建模 == 队列的资源分配满足以下约束条件: * 每个队列的容量 <math>Q_i</math> 满足 <math>\sum Q_i = 100\%</math> * 实际资源分配 <math>A_i</math> 在空闲时为 <math>min(Q_i + \text{借用资源}, \text{maximum-capacity}_i)</math> == 实际案例 == '''场景:'''某公司集群同时运行生产作业(高优先级)和开发测试作业(低优先级)。 * '''解决方案:''' # 创建{{code|prod}}和{{code|dev}}队列,分别分配70%和30%资源。 # 设置{{code|dev.maximum-capacity=50}},允许开发任务在非高峰期借用20%额外资源。 # 为{{code|prod}}队列配置ACL,仅允许生产团队提交作业。 == 高级功能 == * '''资源限制''':可设置队列的{{code|minimum-user-limit-percent}}防止单个用户独占资源。 * '''标签调度''':将节点标记为特定类型(如GPU节点),队列可指定需要的标签。 * '''优先级调度''':队列内任务可按优先级分配资源。 == 常见问题 == '''Q: 如何防止某个队列耗尽集群资源?''' A: 通过设置{{code|maximum-capacity}}限制队列的最大资源占比,例如: <syntaxhighlight lang="xml"> <property> <name>yarn.scheduler.capacity.root.dev.maximum-capacity</name> <value>50</value> </property> </syntaxhighlight> '''Q: 如何动态更新队列配置?''' A: 使用YARN命令(需刷新队列): <syntaxhighlight lang="bash"> yarn rmadmin -refreshQueues </syntaxhighlight> == 最佳实践 == * 为关键业务设置独立的队列,并分配有保障的容量。 * 监控队列资源使用率,定期调整容量分配。 * 对测试环境队列设置较低的{{code|maximum-capacity}},避免影响生产。 [[Category:大数据框架]] [[Category:Apache Hadoop]] [[Category:Yarn资源管理]]
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)
该页面使用的模板:
模板:Code
(
编辑
)