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: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.class 为 FairScheduler,并在 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 资源占比 与 队列配额,避免单一应用/用户占用过多资源。