CentOS环境下Hadoop资源管理的实现流程
在CentOS上实现Hadoop资源管理前,需完成基础环境配置:
JAVA_HOME环境变量(如export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk);ssh-keygen -t rsa生成密钥,ssh-copy-id复制公钥到其他节点),确保NameNode能无密码访问DataNode和NodeManager。从Apache官网下载Hadoop(如3.3.1版本),解压至指定目录(如/usr/local/hadoop),并设置目录权限(chown -R hadoop:hadoop /usr/local/hadoop)。
编辑/etc/profile文件,添加Hadoop路径:
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
执行source /etc/profile使配置生效。
Hadoop资源管理的核心配置集中在etc/hadoop目录下的4个XML文件:
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value> <!-- 副本数,根据集群节点数调整 -->
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/hadoop/hdfs/namenode</value> <!-- NameNode元数据存储路径 -->
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/hadoop/hdfs/datanode</value> <!-- DataNode数据存储路径 -->
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>localhost</value> <!-- ResourceManager所在节点 -->
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value> <!-- 启用MapReduce Shuffle服务 -->
</property>
mapred-site.xml.template复制生成):指定MapReduce运行框架为YARN:<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
首次启动前,需格式化NameNode以初始化HDFS元数据(注意:格式化会清除原有数据,仅首次启动执行):
hdfs namenode -format
依次启动HDFS和YARN服务:
start-dfs.sh # 启动HDFS(NameNode、DataNode)
start-yarn.sh # 启动YARN(ResourceManager、NodeManager)
使用jps命令查看进程:
YARN是Hadoop的资源管理核心,需通过以下配置实现资源分配与调度:
修改yarn-site.xml,设置NodeManager可用资源与调度器限制:
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>8192</value> <!-- 每个NodeManager可用的总内存(MB) -->
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>4096</value> <!-- 单个应用程序可申请的最大内存(MB) -->
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>512</value> <!-- 单个应用程序可申请的最小内存(MB) -->
</property>
YARN支持多种调度器,需在yarn-site.xml中指定:
default、high_priority),每个队列分配固定资源比例(如yarn.scheduler.capacity.root.default.capacity=50表示default队列占50%资源);fair-scheduler.xml)。http://<resourcemanager-host>:8088,可查看集群状态、应用程序列表、节点资源使用情况;http://<namenode-host>:50070,可查看HDFS存储使用情况、目录结构。yarn node -list:列出所有NodeManager节点;yarn application -list:列出所有正在运行的应用程序;yarn application -kill <application_id>:终止指定应用程序。修改yarn-site.xml启用动态资源分配(适合Spark、MapReduce等框架),提升资源利用率:
<property>
<name>yarn.dynamic allocation.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.dynamicallocation.minExecutors</name>
<value>1</value> <!-- 最小Executor数量 -->
</property>
<property>
<name>yarn.dynamicallocation.maxExecutors</name>
<value>10</value> <!-- 最大Executor数量 -->
</property>
core-site.xml与hadoop-policy.xml),确保集群访问安全;hdfs dfs -chmod、hdfs dfs -chown命令设置HDFS目录权限(如hdfs dfs -chmod 750 /user/hadoop)。通过以上步骤,可在CentOS上实现Hadoop集群的资源管理,涵盖环境准备、配置部署、资源调度、监控优化等全流程,满足大规模数据处理需求。