Hadoop 集群部署实验教程
1 环境说明
1.1 软件与硬件配置
CPU:12th Gen Intel(R) Core(TM) i7-12700F
内存:32GB 3600MT/s
操作系统:Windows11
VMware: VMware® Workstation 17 Pro1.2 虚拟机配置
处理器:4 (处理器数量1,每个处理器内核数量4,处理器内核总数4)
内存:4GB
存储:30GB
操作系统:Ubuntu 24.04.3 LTS
网络适配器:NAT1.3 网络信息
VMware虚拟网络编辑器
网段:192.168.37.0
网关:192.168.37.2
子网:255.255.255.0
VMnet8网络适配器
地址:192.168.37.1
子网:255.255.255.01.4集群节点规划
主机名 IP
master 192.168.37.100
slave1 192.168.37.101
slave2 192.168.37.102实验全程在root用户下进行
2 基础环境配置
2.1 网络配置 [master、slave1、slave2]
编辑 Netplan:
vim /etc/netplan/50-cloud-init.yaml配置模板(按节点修改 IP):
network:
version: 2
ethernets:
ens33:
addresses:
- 192.168.37.xxx/24
gateway4: 192.168.37.2
nameservers:
addresses:
- 8.8.8.8应用配置:
netplan apply
ip add验证标准:
IP 正确绑定
三台机器互相
ping可达
2.2 关闭防火墙 [master、slave1、slave2]
ufw disable
systemctl stop ufw
systemctl disable ufw验证:
ufw status输出应为inactive
2.3 SSH Root 登录配置 [master、slave1、slave2]
vim /etc/ssh/sshd_config找到以下行:
#PermitRootLogin prohibit-password
#PasswordAuthentication no修改为:
PermitRootLogin yes
PasswordAuthentication yes重启服务:
systemctl restart ssh验证:
ssh root@本机IP2.4 hosts 配置 [master、slave1、slave2]
修改 hosts文件:
vim /etc/hosts保留原有127.0.0.1 localhost配置,其余127.0.0.1配置删除删除,添加如下配置:
192.168.37.100 master
192.168.37.101 slave1
192.168.37.102 slave2验证:
ping master
ping slave1
ping slave22.5 时间同步 [master、slave1、slave2]
需要换源:
cp /etc/apt/sources.list /etc/apt/sources.list.bak
vim /etc/apt/sources.list
------
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
------
apt-get clean
apt-get update安装ntpdate 服务:
apt install -y ntpdate使用 cron:
crontab -e文件末尾添加:
0 1 * * * /usr/sbin/ntpdate cn.pool.ntp.orgnano:Ctrl + X 输入 Y 然后 Enter 保存
vim::wq
验证:
date3 SSH免密登录
3.1 生成密钥 [master、slave1、slave2]
ssh-keygen -t rsa3.2 分发公钥
在 master:
ssh-copy-id slave1
ssh-copy-id slave2在 slave1:
ssh-copy-id slave2在 slave2:
ssh-copy-id slave13.3 权限修复 [master、slave1、slave2]
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys3.4 验证 [master、slave1、slave2]
在 master:
ssh root@slave1
ssh root@slave2在 slave1:
ssh root@slave2在 slave2:
ssh root@slave1验证:
不需要密码
能正常登录
4 JDK 安装
将
jdk-8u171-linux-x64.tar.gz上传至三台服务器中家目录下~
4.1 解压JDK安装包 [master、slave1、slave2]
cd ~
tar -xzvf jdk-8u171-linux-x64.tar.gz4.2 配置环境变量 [master、slave1、slave2]
修改配置文件:
vim ~/.bashrc文件末尾追加:
# JAVA
export JAVA_HOME=/root/jdk1.8.0_171
export PATH=$JAVA_HOME/bin:$PATH应用生效:
source ~/.bashrc4.3 验证 [master、slave1、slave2]
java -version5 Hadoop 安装与部署
将
hadoop-2.7.7.tar.gz上传至三台服务器中家目录下~
5.1 解压 [master、slave1、slave2]
cd ~
tar -xzvf hadoop-2.7.7.tar.gz
cd hadoop-2.7.7目录功能介绍:
bin # 存放Hadoop的各类程序(命令)
etc # 存放Hadoop的配置文件
include # C语言的一些头文件
lib # 存放Linux系统的动态链接库(.so文件)
libexec # 存放配置Hadoop系统的脚本文件(.sh和.cmd)
LICENSE.txt
NOTICE.txt
README.txt
sbin # 管理员程序(super bin)
share # 存放二进制源码(Java jar包)5.2 环境变量 [master、slave1、slave2]
修改配置文件:
vim ~/.bashrc文件末尾追加:
# hadoop
export HADOOP_HOME=/root/hadoop-2.7.7
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH应用生效:
source ~/.bashrc6 Hadoop 配置
进入配置文件目录:
cd ~/hadoop-2.7.7/etc/hadoop配置HDFS集群,主要涉及到如下文件的修改:
hadoop-env.sh 配置Hadoop的相关环境变量
core-site.xml Hadoop核心配置文件
hdfs-site.xml HDFS 核心配置文件
workers 配置从节点(DataNode)有哪些6.1配置 HDFS 集群 [master、slave1、slave2]
6.1.1配置hadoop-env.sh文件
vim hadoop-env.sh
------
:set number
:25
------
# 修改 JDK 环境变量
export JAVA_HOME=/root/jdk1.8.0_171
------6.1.2 配置core-site.xml文件
vim core-site.xml
------
<configuration> # 添加的代码需要嵌套在此标签中
<property> # 指定 HDFS 的默认文件系统地址
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<property> # Hadoop 的临时目录,存放 NameNode/DataNode 的运行时数据
<name>hadoop.tmp.dir</name>
<value>/root/hadoopdata</value>
</property>
</configuration>
------6.1.3配置 hdfs-site.xml 文件
vim hdfs-site.xml
------
<configuration> # 添加的代码需要嵌套在此标签中
<property> # 指定 HDFS 文件块的副本数量
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
------6.2配置 YARN 集群 [master、slave1、slave2]
6.2.1配置 yarn-env.sh 文件
vim yarn-env.sh
------
:set number
:26
------
# 修改 JDK 环境变量
export JAVA_HOME=/root/jdk1.8.0_171
------6.2.2配置 yarn-site.xml 文件
vim yarn-site.xml
------
<configuration> # 添加的代码需要嵌套在此标签中
<property> # 指定 ResourceManager 所在的主机名
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property> # NodeManager 启动的辅助服务
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
------6.2.3配置 mapred-env.sh 文件
vim mapred-env.sh
------
:set number
:16
------
# 修改 JDK 环境变量
export JAVA_HOME=/root/jdk1.8.0_171
------6.2.4 配置 mapred-site.xml 文件
复制模板:
cp mapred-site.xml.template mapred-site.xml修改文件:
vim mapred-site.xml
------
<configuration> # 添加的代码需要嵌套在此标签中
<property> # 指定 MapReduce 运行在 YARN 上
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
------6.3 配置 workers 集群节点 [master、slave1、slave2]
vim workers
------
master
slave1
slave2
------6.4 配置 slaves 文件 [master]
vim slaves
--------------------
slave1
slave2
--------------------6.5 配置master文件 [master]
vim master
--------------------
master
--------------------7 集群启动
7.1 初始化 hadoop [master]
hdfs namenode -format7.2启动hadoop集群 [master]
cd ~/hadoop-2.7.7/bin
start-all.sh7.3 进程验证 [master、slave1、slave2]
jps在 master会显示:
Jps
SecondaryNameNode
NameNode
ResourceManager在 slave1会显示:
Jps
DataNode
NodeManager在 slave2会显示:
Jps
DataNode
NodeManager8 功能验证 [master]
hadoop jar /root/hadoop-2.7.7/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar pi 10 10验证标准:
正常输出 π 估算值
无报错
9 关闭 hadoop 集群 [master]
cd ~/hadoop-2.7.7/bin
stop-all.sh
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 Vincent Cassano