CentOS7 全新安装 Hadoop3.3.4 伪分布式超详细零基础教程
CentOS7 全新安装 Hadoop3.3.4 伪分布式超详细零基础教程
前言(零基础必看)
本文针对完全没有计算机基础、第一次装虚拟机、第一次搭Hadoop的新手撰写。
逻辑公理:虚拟机配置网络→下载YUM源、下载JDK→配置环境→下载Hadoop与相关文件配置。
环境:VMware虚拟机 + 全新纯净CentOS7最小化安装(4G以上) + Hadoop3.3.4伪分布式
特点:步骤零跳跃、每条命令带解释、所有报错提前规避、踩坑全覆盖、可直接交作业/实训报告。
第一章 装机第一步:配置网卡、打通外网(一切安装操作的前提)
1.1 查看网卡信息
查看网卡信息(包括网卡名称与地址)
ip addr
这里查看到我的网卡名称是ens33,网卡也有正常的ip地址

1.2 验证网络是否通透
# 查看是否获取到IP(有192.168.x.x即为正常)
ip a
# 测试外网连通
ping www.baidu.com -c 4
能 ping 通百度 = 网络配置彻底成功,可以开始换源、装软件

1.3解决:ping外网报错(可选)
需要编辑网卡ens33(这里ens33是你根据电脑网卡名称来的)配置文件
sudo nano /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
NAME=ens33
DEVICE=ens33
ONBOOT=yes
DNS1=114.114.114.114
DNS2=223.5.5.5


✅ 新手逐行解释:
-
ONBOOT=yes:开机自动打开网卡(解决断网根本问题)
-
BOOTPROTO=dhcp:自动获取IP,新手不用手动配IP
-
(可选)DNS1/DNS2:公共DNS,让虚拟机可以解析网址、下载文件
编辑完成后,保存退出:Ctrl+X → yes→回车。并通过以下命令重启网卡
systemctl restart network

1.4 解决:network.service 启动失败报错(可选)
新手执行重启网络会报错:network.service failed
原因:CentOS7 两个网络服务冲突,必须关掉旧服务,用新服务
# 关闭旧网络服务并禁用开机启动
systemctl stop network
systemctl disable network
# 开启新网络管理服务(兼容CentOS7)
systemctl start NetworkManager
systemctl enable NetworkManager
# 重载网卡配置、生效网络
nmcli connection reload
nmcli connection up ens33
第二章 网络通后:配置阿里云YUM源(解决下载慢、下载失败)
2.1 新手必懂:为什么要换源?
系统默认是国外源,速度极慢、经常超时报错。换成阿里云国内源,下载软件秒成功。
2.2 YUM源完整替换步骤(零基础版)
# 进入源配置目录
cd /etc/yum.repos.d/
# 新建备份文件夹,把系统默认源全部备份(防止改错无法恢复)
mkdir backup
mv *.repo backup/
# 下载阿里云CentOS7官方源文件
wget -O CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
# 清理旧缓存、生成新缓存
yum clean all
yum makecache
# 列出启用的仓库(核对是否为镜像网站)
yum repolist
# 更新软件
yum update -y
无报错、正常加载镜像 = YUM源配置成功

第三章 系统环境预处理与用户配置(Hadoop必须提前配置)
3.1 关闭防火墙
防火墙会拦截Hadoop端口,导致集群启动失败、网页打不开,学习环境直接关闭。
#关闭防火墙
systemctl stop firewalld
#开机后自动关闭防火墙
systemctl disable firewalld

3.2 关闭SELinux(必关,否则集群报错)
setenforce 0
nano /etc/selinux/config

修改:SELINUX=enforcing → SELINUX=disabled 保存退出

3.3 安装必备工具包(后续所有操作依赖)
yum install -y wget lrzsz net-tools
工具作用:
-
wget:下载JDK、Hadoop
-
lrzsz:rz上传文件(虚拟机没网也能传包)
-
net-tools:ifconfig等网络命令
我这里安装过了

3.4创建hadoop专用管理员
# 创建用户
useradd hadoop
# 设置密码
passwd hadoop
# 赋予sudo权限
usermod -aG wheel hadoop
# 切换用户
su - hadoop
3.5 配置SSH免密登录(Hadoop启动核心!不做必卡死)
Hadoop启动脚本需要免密登录本机,有密码会直接启动失败。
# 开机自启ssh
systemctl start sshd
systemctl enable sshd
# 生成免密密钥
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
# 写入授权文件
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# 必须设置权限!权限错免密失效
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
# 测试:直接登录、无需密码即为成功(第一次要选择yes)
ssh localhost
# 退出测试
exit


第四章 JDK8 安装与环境变量配置(Hadoop唯一兼容版本)
4.1 下载JDK8(华为云镜像)
注意:这里下载压缩文件的路径就是下载时所在的路径,我这里切换到/root这个路径,下载的压缩文件就是在这个路径。
cd /root
wget https://repo.huaweicloud.com/java/jdk/8u202-b08/jdk-8u202-linux-x64.tar.gz

✅ 若下载失败:Windows浏览器打开链接下载,rz上传虚拟机
4.2 解压并规范目录
注意:这里要记得解压文件的存储路径,后面配置环境变量要用。我这里为了方便文件就放在了/usr/local/jdk下面
tar -zxvf jdk-8u202-linux-x64.tar.gz -C /usr/local/
mv /usr/local/jdk1.8.0_202 /usr/local/jdk

4.3 配置全局环境变量
nano /etc/profile
注意:这里的文件路径千万不要出错,还有这里的Hadoop还没有安装,可以根据后面安装的实际路径来配置或修改
文件末尾追加:
# JDK全局环境
export JAVA_HOME=/usr/local/jdk
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
# Hadoop全局环境
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
# 系统全局PATH
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

生效配置(每次改完必须执行)
source /etc/profile
# 验证java是否真的安装与环境变量配置完成(正常会弹出JDK的版本)
java -version

第五章 Hadoop3.3.4 安装与目录配置
5.1 下载Hadoop安装包
cd /root
wget https://repo.huaweicloud.com/apache/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz
5.3 解压部署
注意:这里解压缩后文件的路径要和上面环境变量配置的一致,不同则选其一修改,让其一致。这里我的路径为/usr/local/hadoop
tar -zxvf hadoop-3.3.4.tar.gz -C /usr/local/
mv /usr/local/hadoop-3.3.4 /usr/local/hadoop
# 把hadoop目录权限交给hadoop用户
chown -R hadoop:hadoop $HADOOP_HOME
#配置该目录的执行权限
chmod -R 755 /usr/local/hadoop
5.3 文件找不到解决方案(可选)
切换目录后找不到文件,执行全盘搜索:
find / -name "hadoop-3.3.4.tar.gz"
find / -name "jdk-8u202-linux-x64.tar.gz"
5.4 报错解决:hadoop: command not found(可选)
原因:新开终端不会自动加载环境变量
解决:每次开机/新开终端执行 source /etc/profile
验证:hadoop version
第六章 Hadoop五大核心配置文件(3.3.4版)
6.1 hadoop-env.sh
nano $HADOOP_HOME/etc/hadoop/hadoop-env.sh
末尾添加:
export JAVA_HOME=/usr/local/jdk

6.2 core-site.xml
nano $HADOOP_HOME/etc/hadoop/core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
</property>
</configuration>

6.3 hdfs-site.xml
nano $HADOOP_HOME/etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.secondary.http.address</name>
<value>0.0.0.0:9868</value>
</property>
</configuration>

6.4 yarn-site.xml
nano $HADOOP_HOME/etc/hadoop/yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>localhost</value>
</property>
<!-- 客户端连接RM的RPC地址,这里写localhost,不要写0.0.0.0 -->
<property>
<name>yarn.resourcemanager.address</name>
<value>localhost:8032</value>
</property>
<!-- WebUI网页监听,允许外部访问,写0.0.0.0:8088 -->
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>0.0.0.0:8088</value>
</property>
</configuration>

6.5 mapred-site.xml(解决MRAppMaster报错核心文件)
❗ Hadoop3.3.4默认缺配置,不写这段运行WordCount必报错、必无output输出
nano $HADOOP_HOME/etc/hadoop/mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
</property>
</configuration>

第七章 集群初始化、启动、验证
7.1 格式化HDFS(仅第一次执行!切勿重复)
hdfs namenode -format
7.2 启动集群
start-dfs.sh
start-yarn.sh

7.3 查看进程(验证成功标准)
jps
五大进程:NameNode、DataNode、SecondaryNameNode、ResourceManager、NodeManager

7.4 网页访问
HDFS:http://虚拟机IP:9870

YARN:http://虚拟机IP:8088

第八章 WordCount测试 + 全部报错终极解决
8.1 完整测试命令
hdfs dfs -rm -r /output
hdfs dfs -mkdir -p /input
hdfs dfs -put $HADOOP_HOME/etc/hadoop/*.xml /input
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.4.jar wordcount /input /output
hdfs dfs -ls /output
hdfs dfs -cat /output/part-r-00000


# 关闭集群
stop-dfs.sh
stop-yarn.sh
8.2 全流程报错汇总(零基础专属排错手册)
报错1:Name or service not known 域名解析失败
原因:未配置DNS、网卡未开机自启 | 解决:配置ens33网卡 ONBOOT=yes + DNS
报错2:Network is unreachable 网络不可达
原因:双网络服务冲突 | 解决:禁用network,使用NetworkManager
报错3:hadoop: command not found
原因:环境变量未手动生效 | 解决:source /etc/profile
报错4:MRAppMaster 类找不到、任务FAILED
原因:Hadoop3.x缺少mapred环境变量 | 解决:补全mapred-site.xml配置并重启集群
报错5:/output No such file or directory
原因:MR任务运行失败无输出 | 解决:修复上述报错后重跑任务
报错6:Attempting to operate on hdfs namenode as root
原因:以root用户运行集群启动命令
报错7:localhost: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
原因:SSH 免密登录没有配置给 hadoop 用户
报错8:Call From localhost/127.0.0.1 to localhost:8032 failed Connection refused
原因:
- 虚拟机内存不足,ResourceManager 内存溢出,进程自动崩溃退出(最常见,要4G以上内存);
- ResourceManager 异常终止,RPC 8032 端口不再监听。 解决方案:
- jps 确认 RM 进程是否存在;查看 resourcemanager 日志定位崩溃原因;
- stop-yarn.sh + kill 残留进程,清理 pid 文件,重新 start-yarn.sh;
- 虚拟机内存小于 2G 时,修改 yarn-site.xml 调低 YARN 容器内存限制;
- 确认
ss -tlnp | grep 8032端口正常监听后,重新提交 WordCount 任务。
第九章 最终成功判定(小白验收标准)
1. 虚拟机可正常上网、ping通百度
2. YUM源正常、工具包齐全
3. SSH免密登录localhost成功
4. JDK、Hadoop环境变量生效,版本查询正常
5. jps五大进程全部在线
6. WordCount任务成功执行,正常输出结果

浙公网安备 33010602011771号