温馨提示×

CentOS 下 Hadoop 资源如何管理

小樊
61
2025-08-31 02:29:14
栏目: 智能运维

CentOS下Hadoop资源管理指南

一、基础环境准备

在CentOS系统中部署Hadoop资源管理前,需完成以下基础配置:

  • 系统要求:建议选择CentOS 7及以上最小化安装版本,减少不必要的软件包占用;关闭SELinux(修改/etc/selinux/config文件,设置SELINUX=disabled)及不必要的系统服务(如防火墙、图形界面),提升系统性能。
  • Java环境:Hadoop依赖Java 8及以上版本,通过java -version验证安装;配置Java环境变量(编辑/etc/profile,添加JAVA_HOMEPATH路径,执行source /etc/profile生效)。
  • SSH免密登录:在集群所有节点间配置SSH无密码通信(使用ssh-keygen -t rsa生成密钥对,通过ssh-copy-id <节点IP>复制公钥),确保NameNode能远程管理DataNode和NodeManager。

二、Hadoop核心组件配置

Hadoop资源管理的核心依赖HDFS(存储)和YARN(资源调度),需通过配置文件调整资源参数:

  • HDFS配置
    • core-site.xml:设置HDFS默认文件系统URI(fs.defaultFS=hdfs://<NameNode-IP>:9000),指定NameNode的访问地址。
    • hdfs-site.xml:配置HDFS存储路径(dfs.namenode.name.dir=/path/to/namenodedfs.datanode.data.dir=/path/to/datanode)及数据副本数(dfs.replication=2,根据集群规模调整,生产环境建议3副本)。
  • YARN配置
    • yarn-site.xml:设置ResourceManager地址(yarn.resourcemanager.hostname=<ResourceManager-IP>)、NodeManager与ResourceManager通信端口(yarn.resourcemanager.scheduler.addressyarn.resourcemanager.resource-tracker.address)及调度器类型(默认Capacity Scheduler,支持多队列资源分配)。
    • 全局资源参数yarn.nodemanager.resource.memory-mb(NodeManager可用物理内存,如8GB内存设置为8192)、yarn.nodemanager.resource.cpu-vcores(NodeManager可用虚拟CPU核数,如4核设置为4)。

三、YARN资源调度器配置

YARN提供三种调度器,需根据业务需求选择:

  • FIFO Scheduler(默认):按作业提交顺序调度,适合批处理任务;无需额外配置,但无法实现资源公平共享。
  • Capacity Scheduler(推荐):支持多队列(如defaulthigh_priority),每个队列分配固定资源比例(yarn.scheduler.capacity.root.default.capacity=70),并设置用户最低资源占有率(yarn.scheduler.capacity.root.default.minimum-user-limit-percent=50),保证队列内用户公平性。
  • Fair Scheduler:动态分配资源,确保所有作业公平共享集群资源(如小作业快速完成,大作业逐步获取资源);需在mapred-site.xml中设置mapreduce.jobtracker.taskSchedulerorg.apache.hadoop.mapred.FairScheduler

四、关键资源参数调优

根据集群硬件配置(如4GB内存、4核CPU)和作业需求(如WordCount任务),调整以下参数以提升资源利用率:

  • 容器资源限制yarn.scheduler.minimum-allocation-mb(单个容器最小内存,如256MB)、yarn.scheduler.maximum-allocation-mb(单个容器最大内存,如3072MB)、yarn.scheduler.minimum-allocation-vcores(单个容器最小CPU核数,如1)、yarn.scheduler.maximum-allocation-vcores(单个容器最大CPU核数,如2),避免容器资源过小导致频繁申请或过大导致资源浪费。
  • Map/Reduce任务资源mapreduce.map.memory.mb(Map任务内存,如256MB)、mapreduce.reduce.memory.mb(Reduce任务内存,如512MB)、mapreduce.map.java.opts(Map任务JVM堆大小,如-Xmx200m,建议为任务内存的80%)、mapreduce.reduce.java.opts(Reduce任务JVM堆大小,如-Xmx400m),确保任务运行时内存充足,避免OOM错误。
  • ApplicationMaster资源yarn.app.mapreduce.am.resource.mb(ApplicationMaster内存,如512MB)、yarn.app.mapreduce.am.command-opts(ApplicationMaster JVM堆大小,如-Xmx384m),保证ApplicationMaster有足够资源协调任务。

五、资源管理与监控

  • 日志聚合:启用日志聚合功能(yarn.log-aggregation-enable=true),设置日志滚动检查间隔(yarn.nodemanager.log-aggregation.roll-monitoring-interval-seconds=300),将各节点日志集中存储到HDFS(路径为hdfs:///logs/userlogs),便于统一查看和分析任务运行情况。
  • 监控工具:使用Hadoop自带Web UI(ResourceManager的8088端口、NameNode的9870端口)实时查看集群资源使用率、任务执行状态;或部署第三方工具(如Ambari、Ganglia、Prometheus),实现更全面的监控(如CPU、内存、磁盘IO)及报警功能(如节点宕机、资源耗尽)。

六、数据管理

  • 数据备份:使用hadoop distcp命令实现HDFS数据的分布式复制(如hadoop distcp hdfs://namenode1:9000/data hdfs://namenode2:9000/backup),将数据备份到另一集群,防止数据丢失。
  • 数据恢复:通过hadoop fs -put命令将备份数据上传至HDFS(如hadoop fs -put /local/backup/data /hdfs/data),或使用hadoop distcp反向复制恢复数据。

0