ping命令互相访问(如ping master-node-ip)。Hadoop依赖Java运行环境,推荐使用OpenJDK 8或11(兼容性更好):
# 更新软件包索引
sudo apt update
# 安装OpenJDK 11(Ubuntu 22.04默认仓库版本)
sudo apt install -y openjdk-11-jdk
# 验证安装(输出版本信息即为成功)
java -version
注意:后续配置Hadoop时需确认JAVA_HOME路径(如/usr/lib/jvm/java-11-openjdk-amd64)。
Hadoop集群节点间需通过SSH通信,配置无密码登录可避免重复输入密码:
# 1. 在Master节点生成SSH密钥对(默认保存在~/.ssh目录)
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
# 2. 将公钥复制到所有Slave节点(替换user为用户名,slave-ip为Slave节点IP)
ssh-copy-id user@slave-ip
# 3. 测试无密码登录(从Master到Slave)
ssh user@slave-ip
# 输入`exit`退出Slave节点
提示:若需Master节点自身也能无密码登录,可将公钥复制到自身(ssh-copy-id user@master-ip)。
从Apache官网下载稳定版本的Hadoop(如3.3.6),解压到指定目录:
# 创建Hadoop安装目录
sudo mkdir -p /usr/local/hadoop
# 下载Hadoop(以3.3.6为例,可通过清华镜像加速)
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
# 解压到安装目录
sudo tar -zxvf hadoop-3.3.6.tar.gz -C /usr/local/hadoop --strip-components=1
# 修改目录所有者(替换hadoop为你的用户名)
sudo chown -R hadoop:hadoop /usr/local/hadoop
验证:进入Hadoop目录,查看版本信息:
cd /usr/local/hadoop
./bin/hadoop version
编辑~/.bashrc文件,添加Hadoop和Java的环境变量:
nano ~/.bashrc
在文件末尾添加以下内容(根据实际路径调整):
# Java环境变量
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
# Hadoop环境变量
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
使配置生效:
source ~/.bashrc
验证:终端输入hadoop version,显示版本信息即为成功。
进入Hadoop配置目录($HADOOP_HOME/etc/hadoop),修改以下关键文件:
配置HDFS的默认文件系统和临时目录:
<configuration>
<!-- 指定HDFS的NameNode地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master-node-ip:9000</value>
</property>
<!-- Hadoop临时目录(需提前创建) -->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
</property>
</configuration>
配置HDFS的副本数和数据存储目录:
<configuration>
<!-- 数据副本数(集群节点数≥3时设为3,否则设为1) -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- NameNode数据存储路径(需提前创建) -->
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/hadoop/data/namenode</value>
</property>
<!-- DataNode数据存储路径(需提前创建) -->
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/hadoop/data/datanode</value>
</property>
</configuration>
配置YARN资源管理器:
<configuration>
<!-- 指定ResourceManager所在节点 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master-node-ip</value>
</property>
<!-- 启用MapReduce Shuffle服务 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
若目录下无该文件,需复制模板生成并配置:
cp mapred-site.xml.template mapred-site.xml
nano mapred-site.xml
添加以下内容:
<configuration>
<!-- 指定MapReduce运行框架为YARN -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
注意:所有路径(如/usr/local/hadoop/data/namenode)需提前创建,并赋予Hadoop用户权限:
mkdir -p /usr/local/hadoop/data/{namenode,datanode}
chown -R hadoop:hadoop /usr/local/hadoop/data
首次启动Hadoop前,需格式化NameNode(仅第一次启动时执行,会清除原有数据):
# 切换到Hadoop用户
su - hadoop
# 格式化NameNode
hdfs namenode -format
格式化完成后,会生成/usr/local/hadoop/data/namenode/current目录。
启动HDFS和YARN服务:
# 启动HDFS(NameNode和DataNode)
start-dfs.sh
# 启动YARN(ResourceManager和NodeManager)
start-yarn.sh
验证进程:使用jps命令查看Master和Slave节点的进程:
NameNode、ResourceManager、SecondaryNameNode(可选)。DataNode、NodeManager。http://master-node-ip:9870(查看HDFS状态、存储信息)。http://master-node-ip:8088(查看集群资源、任务调度)。# 创建HDFS目录
hdfs dfs -mkdir -p /user/hadoop/input
# 上传本地文件到HDFS
hdfs dfs -put ~/test.txt /user/hadoop/input
# 查看HDFS文件列表
hdfs dfs -ls /user/hadoop/input
若上述命令执行成功,说明集群搭建完成。
chmod或chown调整目录权限。fs.defaultFS的9000改为其他端口)。sudo ufw disable),或SSH配置是否正确。