HDFS在Linux中的资源调度策略有哪些
导读:核心概念澄清 在 hadoop 生态中,负责资源调度的是 yarn(resourcemanager、nodemanager、applicationmaster、container),而 hdfs 主要负责分布式存储。因此,谈及“资源调度策略...
核心概念澄清 在 hadoop 生态中,负责资源调度的是 yarn(resourcemanager、nodemanager、applicationmaster、container),而 hdfs 主要负责分布式存储。因此,谈及“资源调度策略”通常指的是 yarn 的调度器;同时,围绕 hdfs 的数据读写会配合 yarn 的调度策略,通过数据本地化等手段提升性能。
yarn 调度器策略
- fifo scheduler(先进先出):按作业提交顺序执行,简单但不利于多用户/多任务并发,容易出现资源利用不充分或长作业“饿死”短作业的情况。适合单一或简单负载。
- capacity scheduler(容量调度器):将集群资源按队列进行分层配额,支持多租户与资源隔离;常用于需要保证各业务线最低资源保障的场景。
- fair scheduler(公平调度器):按权重与需求动态均衡资源,尽量让所有应用公平获得资源,适合多用户共享、作业并发高的环境。
- 混合调度策略:结合多种调度方式或在不同队列/场景下采用不同策略,以适配复杂业务负载与优先级需求。
与 hdfs 协同的调度与优化策略
- 数据本地化调度:计算任务优先调度到存有对应数据块的节点,减少跨节点网络传输,提高读写性能。
- 资源隔离与多租户:通过队列/权重/配额等机制对不同用户或业务进行资源隔离与配额管理,保障稳定性与服务质量(qos)。
- 存储策略与分层(hdfs 侧):启用并配置 dfs.storage.policy.enabled,结合 hot/warm/cold 等存储策略,将冷热数据分布到不同介质,优化成本与性能。
- 系统层 i/o 调度优化(linux 侧):根据负载选择合适的磁盘 i/o 调度器(如 cfq、deadline、noop、bfq),降低读写延迟、提升吞吐。
快速配置示例(启用容量调度器) 在 yarn-site.xml 中设置调度器类型与基础资源参数,可快速启用容量调度器:
<
configuration>
<
property>
<
name>
yarn.resourcemanager.scheduler.class<
/name>
<
value>
org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler<
/value>
<
/property>
<
property>
<
name>
yarn.nodemanager.resource.memory-mb<
/name>
<
value>
8192<
/value>
<
/property>
<
property>
<
name>
yarn.nodemanager.resource.cpu-vcores<
/name>
<
value>
4<
/value>
<
/property>
<
property>
<
name>
yarn.scheduler.capacity.maximum-am-resource-percent<
/name>
<
value>
0.1<
/value>
<
/property>
<
property>
<
name>
yarn.scheduler.capacity.node-locality.wait<
/name>
<
value>
400<
/value>
<
/property>
<
/configuration>
上述配置指定使用 capacityscheduler,并设置单节点可分配的 内存 与 cpu 核数,以及 am 资源占比与本地性等待时间等关键参数。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: HDFS在Linux中的资源调度策略有哪些
本文地址: https://pptw.com/jishu/755706.html
