HDFS与YARN在CentOS上的集成方法
在开始集成前,需完成以下基础配置,确保集群环境稳定:
yum install java-1.8.0-openjdk-devel安装,并通过java -version验证。systemctl stop firewalld)、永久禁用(systemctl disable firewalld);修改/etc/selinux/config中的SELINUX=disabled并重启。yum install ntp),启动并设置开机自启(systemctl start ntpd; systemctl enable ntpd),确保集群节点时间一致。/etc/hostname设置主机名(如namenode、datanode1),修改/etc/hosts文件添加IP与主机名对应关系(如192.168.1.10 namenode)。ssh-keygen -t rsa),将公钥复制到所有DataNode(ssh-copy-id datanode1),测试无密码登录(ssh datanode1)。从Apache官网下载稳定版Hadoop(如3.3.1),解压至/usr/local/目录:
wget https://archive.apache.org/dist/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz
tar -xzvf hadoop-3.3.1.tar.gz -C /usr/local/
创建软链接简化命令:ln -s /usr/local/hadoop-3.3.1 /usr/local/hadoop。
编辑/etc/profile.d/hadoop.sh文件,添加以下内容:
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk  # 根据实际JDK路径调整
使配置生效:source /etc/profile.d/hadoop.sh。
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://namenode:9000</value>  <!-- NameNode地址 -->
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/hadoop/tmp</value>  <!-- 临时目录 -->
    </property>
</configuration>
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>  <!-- 副本数(生产环境建议≥3) -->
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/usr/local/hadoop/dfs/name</value>  <!-- NameNode数据目录 -->
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/usr/local/hadoop/dfs/data</value>  <!-- DataNode数据目录 -->
    </property>
</configuration>
<configuration>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>namenode</value>  <!-- ResourceManager地址 -->
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>  <!-- MapReduce Shuffle服务 -->
    </property>
    <property>
        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
</configuration>
cp $HADOOP_HOME/etc/hadoop/mapred-site.xml.template $HADOOP_HOME/etc/hadoop/mapred-site.xml,然后添加:<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>  <!-- 使用YARN作为资源框架 -->
    </property>
</configuration>
$HADOOP_HOME/etc/hadoop/slaves,添加所有DataNode的主机名(每行一个,如datanode1、datanode2)。hdfs namenode -formatstart-dfs.sh脚本,启动NameNode、DataNode及SecondaryNameNode(若配置了HA)。jps命令查看进程,应存在NameNode、DataNode(DataNode节点上);http://namenode:50070,确认集群状态正常。start-yarn.sh脚本,启动ResourceManager;在所有DataNode节点上运行yarn-daemon.sh start nodemanager启动NodeManager(或在ResourceManager上运行start-yarn.sh自动启动所有NodeManager)。jps命令查看进程,ResourceManager节点应有ResourceManager,DataNode节点应有NodeManager;http://namenode:8088,确认资源管理状态正常。jps,应看到以下进程:
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar wordcount /input /output
其中/input为HDFS上的输入目录(需提前创建并上传文本文件),/output为输出目录(需不存在,避免覆盖)。$HADOOP_HOME/logs目录下的日志文件(如NameNode.log、ResourceManager.log),定位具体错误原因。