温馨提示×

Linux上Hadoop资源管理怎样配置

小樊
34
2025-12-20 13:16:35
栏目: 智能运维

Linux上Hadoop资源管理配置指南

一 核心概念与规划

  • 资源管理由 YARN 负责,核心角色是 ResourceManager(RM)NodeManager(NM);应用运行在 ApplicationMaster(AM)Container 中。
  • 规划要点:
    • 明确每台机器的 总内存CPU 核数,为 YARN 预留系统与其他服务资源(如 OS、HDFS DataNode、JournalNode 等)。
    • 设置 容器内存与 vcore 的上下限,保证调度粒度与集群利用率平衡。
    • 选择并配置 调度器(Capacity/Fair),为多用户/多队列设置配额与权限。
    • 规划 日志聚合黑白名单端口与高可用 等运维能力。

二 关键配置文件与参数

  • 配置目录通常为 $HADOOP_HOME/etc/hadoop/,重点文件:core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml
  • 最小可用配置示例(示例值需按节点资源调整):
    • yarn-site.xml(RM 与 NM 资源与调度)
      • 指定 RM 主机:
        • yarn.resourcemanager.hostname:rm-host
      • 启用 MapReduce Shuffle 服务:
        • yarn.nodemanager.aux-services:mapreduce_shuffle
      • 节点可分配资源:
        • yarn.nodemanager.resource.memory-mb:16384
        • yarn.nodemanager.resource.cpu-vcores:8
      • 容器申请上下限(影响 AM/Task 粒度):
        • yarn.scheduler.minimum-allocation-mb:1024
        • yarn.scheduler.maximum-allocation-mb:8192
        • yarn.scheduler.minimum-allocation-vcores:1
        • yarn.scheduler.maximum-allocation-vcores:4
      • 可选:AM 资源占比(控制并发 AM 数量)
        • yarn.scheduler.capacity.maximum-am-resource-percent:0.5
    • mapred-site.xml(让 MapReduce 运行在 YARN 上)
      • mapreduce.framework.name:yarn
      • 历史服务器(可选,便于查历史作业)
        • mapreduce.jobhistory.address:jobhistory-host:10020
        • mapreduce.jobhistory.webapp.address:jobhistory-host:19888
    • core-site.xml 与 hdfs-site.xml(为 YARN 提供底层存储与访问)
      • core-site.xml:
        • fs.defaultFS:hdfs://nn-host:8020
      • hdfs-site.xml(示例):
        • dfs.replication:3
        • dfs.namenode.name.dir:/data/namenode
        • dfs.datanode.data.dir:/data/datanode
  • 常用端口与地址(便于防火墙放行与排障)
    • RM 客户端提交:8032;RM 调度器:8030;RM 资源跟踪:8031;RM 管理:8033;RM Web:8088
    • 历史服务器:10020/19888
    • 说明:上述端口为常见默认值,生产环境可通过相应地址项自定义。

三 启动与验证

  • 首次启动前格式化 HDFS(仅首次):
    • hdfs namenode -format
  • 启动集群:
    • 启动 HDFS:start-dfs.sh
    • 启动 YARN:start-yarn.sh
    • 启动历史服务器(若配置):在相应节点执行 mr-jobhistory-daemon.sh start historyserver
  • 基本健康检查:
    • 进程检查:jps(应看到 ResourceManager、NodeManager、NameNode、DataNode,以及可选的 JobHistoryServer
    • 资源与节点:
      • yarn node -list
      • hdfs dfsadmin -report
    • Web 界面:
      • ResourceManager:http://rm-host:8088
      • NameNode:http://nn-host:50070
      • JobHistory:http://jh-host:19888

四 队列与调度器配置

  • 调度器选择:
    • 通过 yarn-site.xml 的 yarn.resourcemanager.scheduler.class 指定,常用 CapacityScheduler(默认)或 FairScheduler
  • Capacity Scheduler 快速示例(capacity-scheduler.xml):
    • 启用容量调度并定义队列层级与配额(示例为两级:root 与 root.default):
      • yarn.scheduler.capacity.root.queues:default
      • yarn.scheduler.capacity.root.default.capacity:100
      • yarn.scheduler.capacity.root.default.maximum-capacity:100
      • yarn.scheduler.capacity.root.default.state:RUNNING
      • yarn.scheduler.capacity.root.default.acl_submit_applications:*
      • yarn.scheduler.capacity.root.default.acl_administer_queue:*
    • 提交作业到指定队列:
      • 命令行:yarn jar app.jar … -Dmapreduce.job.queuename=root.default
  • Fair Scheduler 使用:
    • 在 yarn-site.xml 设置 yarn.resourcemanager.scheduler.classFairScheduler,并在 fair-scheduler.xml 中定义 pool/队列权重最小/最大资源ACL 等策略。

五 高可用与运维要点

  • ResourceManager HA(基于 ZooKeeper 的 Active/Standby)
    • 关键配置:
      • yarn.resourcemanager.ha.enabled:true
      • yarn.resourcemanager.ha.rm-ids:rm1,rm2
      • yarn.resourcemanager.zk-address:zk1:2181,zk2:2181,zk3:2181
      • yarn.resourcemanager.hostname.rm1 / rm2:rm1-host / rm2-host
      • 自动故障转移:yarn.resourcemanager.ha.automatic-failover.enabled:true
      • 客户端故障转移代理:yarn.client.failover-proxy-provider:org.apache.hadoop.yarn.client.ConfiguredRMFailoverProxyProvider
    • 状态存储:生产推荐 ZKRMStateStore;故障切换后新 Active RM 可恢复应用状态。
  • 节点与访问控制:
    • 黑白名单:yarn.resourcemanager.nodes.include-path / exclude-path(支持动态刷新)
    • 日志聚合:yarn.log-aggregation-enable:true,并设置保留时间(如 yarn.log-aggregation.retain-seconds:604800 表示保留 7 天)
  • 容量与隔离建议:
    • 为系统预留内存(如 2–4 GB 或更多),避免与容器资源争用。
    • 容器内存与 vcore 上下限需与作业实际需求匹配,避免过小导致频繁失败或过大降低并发。
    • 结合业务设置 AM 资源占比队列配额,避免单一应用/用户占用过多资源。

0