Hadoop集群的搭建
在三台服务器上搭建 Hadoop 集群,我们需要配置一个主节点(NameNode)和两个从节点(DataNode)。
环境准备
3 台服务器(推荐配置:2GB 内存以上,2 核 CPU)
操作系统:Ubuntu 24.04 LTS
安装 Java 8(Hadoop 对 Java 8 支持最佳)
apt update && apt install openjdk-8-jdk openjdk-8-jre -y
sudo update-alternatives --config java //设置java为java8
sudo update-alternatives --config javac //设置javac为java8
服务器间网络互通
服务器规划
三台服务器的主机名和 IP 如下:
master: 192.168.43.3(主节点)
node01: 192.168.43.4(从节点 1)
node02: 192.168.43.5(从节点 2)
配置步骤
1.配置主机名和 IP 映射(所有节点)
# 修改主机名
# master节点
sudo hostnamectl set-hostname master
# node01节点
sudo hostnamectl set-hostname node01
# node02节点
sudo hostnamectl set-hostname node02
# 配置IP映射
sudo nano /etc/hosts
在/etc/hosts文件中添加以下内容:
192.168.43.3 master
192.168.43.4 node01
192.168.43.5 node02
2.配置免密登录(主节点到所有节点)
在 master 节点执行:
# 生成SSH密钥
ssh-keygen -t rsa -P ""
# 复制公钥到本机
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# 复制公钥到从节点
ssh-copy-id node01
ssh-copy-id node02
3.安装 Hadoop(所有节点)
# 下载Hadoop 3.3.4(可根据最新稳定版调整)
wget https://archive.apache.org/dist/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz
# 解压
sudo tar -zxvf hadoop-3.3.4.tar.gz -C /usr/local/
# 重命名
sudo mv /usr/local/hadoop-3.3.4 /usr/local/hadoop
# 设置权限
sudo chown -R $USER:$USER /usr/local/hadoop
4.配置环境变量(所有节点)
nano ~/.bashrc
在文本末尾添加以下内容:
# Java环境变量
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin
# Hadoop环境变量
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH
export HADOOP_CLASSPATH=$(hadoop classpath)
使环境变量生效:
source ~/.bashrc
5.配置 Hadoop(仅在 master 节点配置,然后复制到从节点)
nano $HADOOP_HOME/etc/hadoop/hadoop-env.sh
同样在文本末尾添加以下内容
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
# HDFS组件用户(NameNode、DataNode、SecondaryNameNode)
export HDFS_NAMENODE_USER="root"
export HDFS_DATANODE_USER="root"
export HDFS_SECONDARYNAMENODE_USER="root"
# YARN组件用户(ResourceManager、NodeManager)
export YARN_RESOURCEMANAGER_USER="root"
export YARN_NODEMANAGER_USER="root"
接下来配置核心文件:
6.配置 core-site.xml
nano $HADOOP_HOME/etc/hadoop/core-site.xml
添加以下内容:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master节点ip:9002</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
</property>
</configuration>
7.配置 hdfs-site.xml
nano $HADOOP_HOME/etc/hadoop/hdfs-site.xml
添加以下内容:
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/usr/local/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/usr/local/hadoop/hdfs/data</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
8.配置 mapred-site.xml
nano $HADOOP_HOME/etc/hadoop/mapred-site.xml
添加以下内容
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master节点IP:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master节点IP:19888</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.application.classpath</name>
<value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME>
</property>
</configuration>
9.配置 yarn-site.xml
nano $HADOOP_HOME/etc/hadoop/yarn-site.xml
添加以下内容:
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master节点ip:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master节点ip:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master节点ip:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master节点ip:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master节点ip:8088</value>
</property>
</configuration>
10.配置 workers 文件
nano $HADOOP_HOME/etc/hadoop/workers
添加从节点:
node01
node02
11.编辑 start-dfs.sh 和 stop-dfs.sh
# 编辑启动脚本
nano $HADOOP_HOME/sbin/start-dfs.sh
# 编辑停止脚本
nano $HADOOP_HOME/sbin/stop-dfs.sh
在两个文件的开头(#!/usr/bin/env bash之后)分别添加以下内容:
HDFS_DATANODE_USER=root
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
12.编辑 start-yarn.sh 和 stop-yarn.sh
# 编辑启动脚本
nano $HADOOP_HOME/sbin/start-yarn.sh
# 编辑停止脚本
nano $HADOOP_HOME/sbin/stop-yarn.sh
在两个文件的开头(#!/usr/bin/env bash之后)分别添加以下内容:
YARN_RESOURCEMANAGER_USER=root
HDFS_DATANODE_USER=root
YARN_NODEMANAGER_USER=root
13.复制配置到从节点
# 复制到node01
scp -r $HADOOP_HOME/etc/hadoop/* node01:$HADOOP_HOME/etc/hadoop/
# 复制到node02
scp -r $HADOOP_HOME/etc/hadoop/* node02:$HADOOP_HOME/etc/hadoop/
14.格式化 HDFS(仅在 master 节点执行)
hdfs namenode -format
15.启动 Hadoop 集群(在 master 节点执行)
# 启动HDFS
start-dfs.sh
# 启动YARN
start-yarn.sh
# 启动历史服务器
mr-jobhistory-daemon.sh start historyserver
16.验证集群状态(所有节点执行)
# 查看Java进程
jps
# master节点应显示:
# NameNode, ResourceManager, SecondaryNameNode, JobHistoryServer, Jps
# node节点应显示:
# DataNode, NodeManager, Jps
17.访问web端查看是否启动正常
HDFS 管理界面:http://192.168.43.3:9870(可看到 DataNode 数量为 2)

YARN 管理界面:http://192.168.43.3:8088(可看到活跃节点为 2)

18.执行一个简单的 Hadoop 命令验证集群功能
# 在HDFS上创建一个测试目录
hdfs dfs -mkdir /test
# 上传一个本地文件到HDFS
echo "Hello Hadoop" > test.txt
hdfs dfs -put test.txt /test/
# 查看HDFS上的文件
hdfs dfs -ls /test/
hdfs dfs -cat /test/test.txt
19.测试 YARN 集群的 MapReduce 功能
yarn jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.4.jar pi 10 100
输出圆周率即测试功能正常

都测试正常,说明Hadoop集群搭建完成,可以进行使用啦!
浙公网安备 33010602011771号