Hadoop集群的安装与部署
一、实验目的
Hadoop核心组件包括HDFS、YARN和MapReduce。掌握集群安装配置、启动管理及运行MapReduce任务(如WordCount)的方法,理解节点分工与资源调度机制。
二、实验环境
- 操作系统:Linux(Ubuntu )
- Hadoop版本:Hadoop 3.x
- JDK版本:JDK 8或以上
- 节点配置:至少三个节点(1个Master节点,2个Slave节点)
三、实验前准备
1. 环境准备
- 确保所有节点之间可以通过SSH无密码登录。

- 每个节点上安装JDK,并配置JAVA_HOME环境变量。
1.在每个节点安装 JDK:
sudo apt update
sudo apt install openjdk-8-jdk

2.查找 JDK 安装路径:
update-alternatives --config java
(通常路径为/usr/lib/jvm/java-8-openjdk-amd64)

3.配置 JAVA_HOME 环境变量,编辑~/.bashrc文件:
vim ~/.bashrc

4.在文件末尾添加:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin
5.使配置生效:
source ~/.bashrc

6.验证:执行echo $JAVA_HOME显示正确路径,java -version显示 JDK 版本信息即成功。

2. 下载安装Hadoop
在Hadoop官方网站下载Hadoop的二进制文件,并将其解压到指定目录。以Ubuntu系统为例:
wget https://downloads.apache.org/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz【已归档,重新换个镜像网址wget https://archive.apache.org/dist/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz】
tar -zxvf hadoop-3.3.1.tar.gz -C /usr/local/
cd /usr/local/
mv hadoop-3.3.1 hadoop
改进:
进入家目录
cd ~
下载 3.4.0(2024-07 最新稳定版,可替换为任意版本)
wget https://downloads.apache.org/hadoop/common/hadoop-3.4.0/hadoop-3.4.0.tar.gz
tar -xzf hadoop-3.4.0.tar.gz
sudo mv hadoop-3.4.0 /usr/local/hadoop
sudo chown -R $USER:$USER /usr/local/hadoop

四、Hadoop集群配置
1. 配置环境变量
在每个节点的~/.bashrc文件中添加以下内容:
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

执行以下命令使配置生效:
source ~/.bashrc

2. 配置Hadoop核心文件
a. core-site.xml
编辑$HADOOP_HOME/etc/hadoop/core-site.xml文件,添加以下配置:

<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
</configuration>

b. hdfs-site.xml
编辑$HADOOP_HOME/etc/hadoop/hdfs-site.xml文件,添加以下配置:
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///usr/local/hadoop/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///usr/local/hadoop/hdfs/datanode</value>
</property>
</configuration>

c. mapred-site.xml
将mapred-site.xml.template复制为mapred-site.xml,并编辑如下:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

d. yarn-site.xml
编辑$HADOOP_HOME/etc/hadoop/yarn-site.xml文件,添加以下配置:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>

3. 配置Slave节点
在$HADOOP_HOME/etc/hadoop/slaves文件中,列出所有Slave节点的主机名,例如:
slave1
slave2


五、格式化HDFS文件系统
在Master节点上执行以下命令格式化HDFS:
hdfs namenode -format

六、启动Hadoop集群
1. 启动HDFS
在Master节点上执行以下命令:
start-dfs.sh

使用以下命令检查HDFS的运行状态:
Jps

2. 启动YARN
在Master节点上执行以下命令:
start-yarn.sh

同样使用jps命令检查YARN的运行状态。

七、验证集群的安装
1. 上传文件到HDFS
在Master节点上执行以下命令,将文件上传到HDFS:
hdfs dfs -mkdir /user
hdfs dfs -mkdir /user/hadoop
hdfs dfs -put $HADOOP_HOME/etc/hadoop/* /user/hadoop/

2. 运行一个MapReduce任务
在Master节点上执行以下命令运行一个简单的MapReduce任务:
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar wordcount /user/hadoop/* /user/hadoop/output【这个代码失效,用下一行代码】
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar wordcount /user/hadoop /user/hadoop/output

3. 检查任务结果
任务完成后,使用以下命令查看结果:
hdfs dfs -cat /user/hadoop/output/part-r-00000

目前的状态是:完成了集群的安装和配置,但未能成功启动和运行。
核心问题分析:启动失败的原因
-
SSH无密码登录未配置(最根本的问题):
-
在您尝试启动YARN时,错误信息
ssh: connect to host localhost port 22: Connection refused和Starting resource managers on []表明启动脚本无法通过SSH连接到任何节点(包括本地主机localhost)。 -
Hadoop的集群启动脚本(
start-dfs.sh和start-yarn.sh)依赖SSH来远程启动各个节点上的守护进程。即使所有节点都在同一台物理机上(使用localhost模拟),也需要配置SSH免密登录,否则脚本无法自动启动进程。
-
-
HDFS格式化可能不完整:
-
虽然格式化命令
hdfs namenode -format显示了大量输出信息,但关键的成功提示successfully formatted并未在您提供的信息中明确出现。需要确认格式化确实成功。
-
-
配置文件潜在错误:
-
在运行MapReduce任务时出现的
error parsing conf core-site.xml错误,表明您的XML配置文件可能存在语法错误(例如标签未正确闭合、有多余字符等)。这会导致Hadoop守护进程无法正确读取配置,从而使整个集群失效。
-
结论与下一步操作建议
您的实验卡在了 “第六步:启动Hadoop集群”。由于启动失败,后续的所有验证步骤(第七步)都无法进行。
要完成第二部分,您必须解决以上问题:
-
首先配置SSH免密登录到localhost:
# 生成SSH密钥对(如果还没有) ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa # 将公钥追加到授权密钥文件中,以允许本机登录本机 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys # 测试SSH登录localhost是否需要密码 ssh localhost如果执行
ssh localhost后不需要输入密码就能成功登录又退出,则说明配置成功。这是必须完成的前置条件。 -
重新格式化HDFS(在解决SSH问题后):
hdfs namenode -format务必确认命令输出中包含
successfully formatted字样。 -
仔细检查并修正XML配置文件:
-
使用命令
xmllint检查配置文件语法:xmllint --noout $HADOOP_HOME/etc/hadoop/core-site.xml xmllint --noout $HADOOP_HOME/etc/hadoop/hdfs-site.xml -
确保文件内容严格遵循XML格式,特别是
<configuration>标签的闭合。您提供的配置内容在语法上是正确的,但可能在实际操作中键入了多余字符或格式错误。
-
-
重新启动集群:
-
解决上述所有问题后,重新启动集群:
stop-dfs.sh # 先停止(如果之前启动过) stop-yarn.sh start-dfs.sh # 重新启动 start-yarn.sh jps # 检查进程,应看到NameNode, DataNode, SecondaryNameNode, ResourceManager, NodeManager
-
-
重新进行功能验证:
-
只有在
jps命令显示出所有关键进程后,才能继续执行第七步的上传文件、运行WordCount等操作。
-
更多推荐

所有评论(0)