Hadoop Linux版集群配置指南
namenode(主节点)、datanode1、datanode2(从节点)。systemctl stop firewalld && systemctl disable firewalld(避免通信拦截)。hostnamectl set-hostname <节点名>(如namenode),并通过vim /etc/hosts添加所有节点的IP与主机名映射(如192.168.1.100 namenode)。ping <节点IP>测试连通性。Hadoop依赖Java 8或更高版本(推荐OpenJDK):
sudo yum install -y java-1.8.0-openjdk-devel(CentOS)或sudo apt install -y openjdk-8-jdk(Ubuntu)。java -version(需显示Java版本信息)。/etc/profile,添加export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk(路径以实际安装位置为准),并执行source /etc/profile使配置生效。wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz。/export/servers):tar -xzvf hadoop-3.3.4.tar.gz -C /export/servers/。/etc/profile,添加export HADOOP_HOME=/export/servers/hadoop-3.3.4、export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin,执行source /etc/profile生效。所有配置文件位于$HADOOP_HOME/etc/hadoop目录下,需修改以下关键文件:
修改JAVA_HOME指向已安装的Java路径:export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk(根据实际路径调整)。
配置HDFS的默认文件系统和临时目录:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode:9000</value> <!-- 主节点主机名:端口 -->
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/export/data/hadoop/tmp</value> <!-- 临时文件存储路径 -->
</property>
</configuration>
配置HDFS副本数(生产环境建议3)和数据目录:
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value> <!-- 副本数(从节点数量+1) -->
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/export/data/hadoop/hdfs/namenode</value> <!-- NameNode元数据目录 -->
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/export/data/hadoop/hdfs/datanode</value> <!-- DataNode数据目录 -->
</property>
</configuration>
配置YARN资源管理器和shuffle服务:
<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>
</configuration>
创建mapred-site.xml(若不存在,可复制mapred-site.xml.template):
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value> <!-- 使用YARN作为资源管理器 -->
</property>
<property>
<name>mapreduce.application.classpath</name>
<value>$HADOOP_HOME/share/hadoop/mapreduce/*:$HADOOP_HOME/share/hadoop/mapreduce/lib/*</value> <!-- MapReduce类路径 -->
</property>
</configuration>
指定从节点主机名(每行一个):
datanode1
datanode2
该文件用于Hadoop自动识别从节点。
实现主节点到从节点的无密码通信:
ssh-keygen -t rsa(直接回车,默认保存到~/.ssh/id_rsa)。ssh-copy-id hadoop@datanode1、ssh-copy-id hadoop@datanode2(hadoop为从节点用户名,需提前创建并设置密码)。ssh hadoop@datanode1(无需输入密码即可登录)。将主节点的Hadoop目录复制到所有从节点(确保路径一致):
scp -r /export/servers/hadoop-3.3.4 hadoop@datanode1:/export/servers/
scp -r /export/servers/hadoop-3.3.4 hadoop@datanode2:/export/servers/
分发后,需在从节点上同样配置workers文件(内容与主节点一致)。
仅在首次启动集群前执行,用于初始化HDFS元数据:
hdfs namenode -format
执行成功后会显示Successfully formatted,表示格式化完成。
start-dfs.sh(启动NameNode、DataNode)。start-yarn.sh(启动ResourceManager、NodeManager)。jps(主节点应显示NameNode、ResourceManager;从节点应显示DataNode、NodeManager)。http://<namenode-IP>:9870(HDFS Web UI),查看NameNode和DataNode状态;访问http://<namenode-IP>:8088(YARN Web UI),查看ResourceManager和NodeManager状态。hdfs dfsadmin -report(查看HDFS集群详情,如节点数量、存储容量);yarn node -list(查看YARN节点列表)。dfs.datanode.data.dir指定的目录是否存在且权限正确(需为hadoop用户所有);确保从节点能访问主节点的9000端口(telnet namenode 9000)。HADOOP_HOME目录及子目录权限为hadoop用户(chown -R hadoop:hadoop /export/servers/hadoop-3.3.4)。