温馨提示×

CentOS HDFS配置中的资源分配策略

小樊
38
2026-01-11 05:28:24
栏目: 智能运维

CentOS 上 HDFS 的资源分配策略与落地配置

一 架构与职责澄清

  • HDFS 负责分布式存储(如块大小、副本、磁盘均衡),不直接做作业级资源调度。
  • YARN 负责集群资源管理与调度(内存、CPU、队列与调度策略),是“资源分配策略”的承载者。
  • 常见调度器:FIFO(简单、吞吐优先)、Capacity Scheduler(多队列容量配额)、Fair Scheduler(按权重公平分配)。在 yarn-site.xml 中通过 yarn.resourcemanager.scheduler.class 指定,默认常见为 CapacityScheduler

二 核心配置与示例

  • 建议将以下关键配置写入对应文件(路径通常为 $HADOOP_HOME/etc/hadoop/):
    • YARN 全局资源与调度器(yarn-site.xml)
      • 设置节点可分配资源:yarn.nodemanager.resource.memory-mbyarn.nodemanager.resource.cpu-vcores
      • 设置容器申请边界:yarn.scheduler.minimum-allocation-mbyarn.scheduler.maximum-allocation-mbyarn.scheduler.minimum-allocation-vcoresyarn.scheduler.maximum-allocation-vcores
      • 选择调度器:yarn.resourcemanager.scheduler.class=org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler
      • 可选:AM 资源占比 yarn.scheduler.capacity.maximum-am-resource-percent(如 0.5 表示最多 50% 用于 AM)
    • 队列与配额(capacity-scheduler.xml,使用 Capacity Scheduler 时)
      • 定义队列:yarn.scheduler.capacity.root.queues=default,queue1,queue2
      • 设置容量与上限:yarn.scheduler.capacity.root.default.capacity=50yarn.scheduler.capacity.root.default.maximum-capacity=100
    • HDFS 存储与副本(hdfs-site.xml)
      • 块大小:dfs.blocksize=268435456(即 256MB,可按业务调整)
      • 副本数:dfs.replication=3(可靠性与存储权衡)
      • 目录:dfs.namenode.name.dirdfs.datanode.data.dir
    • 内存与并发(hadoop-env.sh)
      • NameNode 堆:export HADOOP_HEAPSIZE=4096(示例 4GB
    • 示例要点汇总(数值为示例,需按节点资源与业务调整):
      • NodeManager 总内存:8192 MB;总 vCores:4
      • 容器最小/最大内存:1024 MB / 8192 MB;容器最小/最大 vCores:1 / 4
      • 调度器:CapacityScheduler
      • 队列:default 50%,queue1 25%,queue2 25%
      • 块大小:256MB;副本:3

三 生效与验证

  • 分发配置到所有节点后,按序重启:先 NameNode/DataNode,再 ResourceManager/NodeManager(或使用 start-dfs.shstart-yarn.sh 统一启动)。
  • 验证要点:
    • 进程与端口:NameNode 50070、DataNode 50075、ResourceManager 8088、JobHistory 19888
    • 配置生效:检查 dfs.blocksizedfs.replication 是否与预期一致
    • 队列与调度:在 8088 页面查看队列容量、应用分配情况
    • 数据均衡:使用 hdfs diskbalancer 生成/执行/查询计划,均衡节点内多磁盘数据分布。

四 优化与常见误区

  • 容量规划与对齐
    • yarn.scheduler.minimum-allocation-mb 与容器实际内存请求对齐,避免过多小容器碎片;确保 maximum-allocation-mb ≤ NodeManager 可用内存
    • 为 AM 预留合理上限(如 maximum-am-resource-percent=0.5),避免 AM 占用过多资源导致容器排队。
  • 数据布局与性能
    • 合理设置 dfs.blocksize:大文件/吞吐型作业用 256MB 或更大;小文件/低延迟作业可适当减小。
    • 保持 dfs.replication=3 作为通用起点,存储紧张可评估 2,但需充分评估可靠性影响。
    • 使用 DiskBalancer 消除节点内磁盘热点,避免单盘瓶颈。
  • 多租户与隔离
    • 使用 Capacity/Fair Scheduler 划分队列、设置容量与上限,实现部门/项目级资源隔离与公平。
  • 常见误区
    • 误把 HDFS 参数 当作调度策略;调度策略应在 YARN 侧配置。
    • 仅调大 dfs.replication 而不评估存储与网络压力;或只改 blocksize 而不重跑作业验证效果。
    • 修改 yarn.nodemanager.resource.memory-mb 后未重启 NodeManager,导致配置不生效。

0