CentOS下Hadoop资源管理指南
在CentOS系统中部署Hadoop资源管理前,需完成以下基础配置:
/etc/selinux/config文件,设置SELINUX=disabled)及不必要的系统服务(如防火墙、图形界面),提升系统性能。java -version验证安装;配置Java环境变量(编辑/etc/profile,添加JAVA_HOME及PATH路径,执行source /etc/profile生效)。ssh-keygen -t rsa生成密钥对,通过ssh-copy-id <节点IP>复制公钥),确保NameNode能远程管理DataNode和NodeManager。Hadoop资源管理的核心依赖HDFS(存储)和YARN(资源调度),需通过配置文件调整资源参数:
core-site.xml:设置HDFS默认文件系统URI(fs.defaultFS=hdfs://<NameNode-IP>:9000),指定NameNode的访问地址。hdfs-site.xml:配置HDFS存储路径(dfs.namenode.name.dir=/path/to/namenode、dfs.datanode.data.dir=/path/to/datanode)及数据副本数(dfs.replication=2,根据集群规模调整,生产环境建议3副本)。yarn-site.xml:设置ResourceManager地址(yarn.resourcemanager.hostname=<ResourceManager-IP>)、NodeManager与ResourceManager通信端口(yarn.resourcemanager.scheduler.address、yarn.resourcemanager.resource-tracker.address)及调度器类型(默认Capacity Scheduler,支持多队列资源分配)。yarn.nodemanager.resource.memory-mb(NodeManager可用物理内存,如8GB内存设置为8192)、yarn.nodemanager.resource.cpu-vcores(NodeManager可用虚拟CPU核数,如4核设置为4)。YARN提供三种调度器,需根据业务需求选择:
default、high_priority),每个队列分配固定资源比例(yarn.scheduler.capacity.root.default.capacity=70),并设置用户最低资源占有率(yarn.scheduler.capacity.root.default.minimum-user-limit-percent=50),保证队列内用户公平性。mapred-site.xml中设置mapreduce.jobtracker.taskScheduler为org.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),避免容器资源过小导致频繁申请或过大导致资源浪费。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错误。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 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反向复制恢复数据。