注意事项
前置配置:CentOS 安装、SSH、主机名、静态 IP
1. 安装 CentOS
安装过程中需要注意:
- 配置用户时,一定要勾选 “Make this user administrator”,否则装完之后 sudo 不可用,很多操作会受限。
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


2. 进入系统后配置 root 密码
先切到 root:
sudo -i
然后设置 root 密码:
passwd root

3. 配置 SSH 允许 root 登录
编辑 sshd 配置文件:
# 先进入root,输入之后要先输入密码(没有回显的,直接输入就行)
su root
vim /etc/ssh/sshd_config
找到这一行:
#PermitRootLogin yes
按 i 进入编辑模式,把前面的 # 删掉,改成:
PermitRootLogin yes
按 Esc,输入 :wq 回车保存。

重启 sshd 服务:
systemctl restart sshd
4. 配置主机名
老师要求格式为:学号后三位 + 姓名英文大写缩写,例如 224ZKB。
hostnamectl set-hostname 111XXX

5. 配置静态 IP
5.1 在 VMware 中确认子网信息
打开 VMware → 编辑 → 虚拟网络编辑器。

选择 VMnet8,点击 DHCP 设置,查看并记下子网 IP、网关。


这里要看DHCP设置里面的子网IP,这里我的子网IP是192.168.196.0,所以我的网关就是192.168.196.2,
5.2 备份网卡配置
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33.bak
5.3 编辑网卡配置文件
vi ifcfg-ens33
写入以下内容(UUID 保留原来的不要改):
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=b469f6be-3aa2-4ab7-8fbd-48be8b007e5d
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.196.101
PREFIX=24
GATEWAY=192.168.196.2
DNS1=8.8.8.8
DNS2=114.114.114.114
几点说明,照着改不要抄错:
- UUID:这一行必须保留你自己机器上原来的值,不要照抄这里的 b469f6be-…,原样写回。
- IPADDR:填你自己规划好的静态 IP。示例中用的是 192.168.196.101,你要改成自己网段里未被占用的地址。
- GATEWAY:填你 VMware 虚拟网络编辑器里 VMnet8 的网关地址。示例中是 192.168.196.2,你的可能是别的,以你实际看到的为准。
- PREFIX=24:表示子网掩码是 255.255.255.0,一般不用改。
- DNS1、DNS2:用 8.8.8.8 和 114.114.114.114 就行,也可以换成学校或本地的 DNS。
保存退出:按 Esc,输入 :wq 回车。
5.4 重启网络服务
systemctl restart network
6. 用 Xshell 连接
打开 Xshell,新建会话:
- 主机:填上面 IPADDR 的地址,例如 192.168.196.101
- 端口:22
- 用户名:root

连接成功后即可用 root 身份进行后续操作。
Docker的安装配置以及使用
说明:执行任务前先看好在那个机器,那个用户下执行,任务执行如果失败一定要修复不能继续下去
1. 在 CentOS 中安装 Docker
(1) 设置Docker存储库和相关配置
① 执行yum命令安装相关软件包,分别是yum‑utils、gcc、gcc‑c++,操作命令如下。
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
cat > /etc/yum.repos.d/CentOS-Base.repo << 'EOF'
[base]
name=CentOS-$releasever – Base – mirrors.tuna.tsinghua.edu.cn
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.9.2009/os/$basearch/
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos/RPM-GPG-KEY-CentOS-7
[updates]
name=CentOS-$releasever – Updates – mirrors.tuna.tsinghua.edu.cn
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.9.2009/updates/$basearch/
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos/RPM-GPG-KEY-CentOS-7
[extras]
name=CentOS-$releasever – Extras – mirrors.tuna.tsinghua.edu.cn
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.9.2009/extras/$basearch/
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos/RPM-GPG-KEY-CentOS-7
[centosplus]
name=CentOS-$releasever – Plus – mirrors.tuna.tsinghua.edu.cn
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.9.2009/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos/RPM-GPG-KEY-CentOS-7
EOF
yum clean all
yum makecache
下载
yum install -y yum-utils
yum install -y gcc
yum install -y gcc-c++
② 执行yum‑config‑manager –add‑repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo命令,将Docker的镜像仓库设置成国内的镜像仓库,便于后续从仓库中拉取镜像,操作命令及结果如下。
yum-config-manager –add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
③ 执行yum makecache fast命令更新yum索引,操作命令及结果如下。
yum makecache fast
④ 执行yum install docker‑ce docker‑ce‑cli containerd.io docker‑compose‑plugin命令安装docker‑ce,等待片刻,Docker即可安装成功,操作命令及结果如下。
yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
⑤ 安装成功后,因为Docker的运行需要用到各种端口,为避免防火墙对操作过程产生影响,启动Docker前,先执行systemctl stop firewalld关闭防火墙;再执行systemctl status firewalld查看防火墙状态,显示inactive (dead)代表防火墙已关闭。
systemctl stop firewalld
systemctl status firewalld
⑥ 执行systemctl disable firewalld命令,禁止防火墙开机自启动。
systemctl disable firewalld
⑦ 执行systemctl start docker启动Docker;执行systemctl status docker查看运行状态,出现active (running)代表Docker正常启动。
systemctl start docker
systemctl status docker
(2) 测试Docker
docker换源
cat > /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.1ms.run",
"https://docker.xuanyuan.me",
"https://docker.m.daocloud.io",
"https://docker.1panel.live",
"https://dockerproxy.com",
"https://reg-mirror.qiniu.com"
]
}
EOF
systemctl daemon-reload
systemctl restart docker
① 执行docker version查看Docker版本。
docker version
② 执行docker run hello‑world运行样例测试,输出Hello from Docker!,代表Docker安装成功。
docker run hello-world
2. Docker常用命令
(1) Docker基础命令
#启动Docker
systemctl start docker
#停止Docker
systemctl stop docker
#重启Docker
systemctl restart docker
#查看Docker运行状态
systemctl status docker
#设置Docker开机自启
systemctl enable docker
#查看Docker概要信息
docker info
#查看帮助文档
docker –help
(2) 镜像相关操作命令
① 列出本地镜像
# docker images [options]
# -a:列出全部本地镜像;-q:只输出镜像ID
docker images
docker images -a
docker images -q
docker images -qa
REPOSITORY:镜像仓库;TAG:镜像版本标签;IMAGE ID:镜像ID;CREATED:镜像创建时间;SIZE:镜像大小。 使用REPOSITORY:TAG指定镜像版本,不指定TAG默认拉取latest最新版。
② 查找远程镜像(这个可能会运行失败,但是不会对我们的实验造成影响)
# docker search [options] 镜像名称
# –limit N:返回N条镜像,默认25条
docker search –limit 5 centos
NAME镜像名;DESCRIPTION描述;STARS点赞数;OFFICIAL是否官方;AUTOMATED是否自动构建。
③ 下载镜像
#docker pull 镜像名称[:TAG]
#示例:拉取centos7镜像
docker pull centos:7
④ 删除镜像
#删除单个镜像
docker rmi -f 镜像名称/镜像ID
#删除多个镜像,空格隔开
docker rmi -f centos:latest ubuntu:latest
#删除全部本地镜像
docker rmi -f $(docker images -qa)
(3) 启动和停止容器
#启动容器
docker start 容器ID/容器名称
#停止容器
docker stop 容器ID/容器名称
docker start test
docker stop test
(4) 进入、退出容器
方式1(推荐,退出不停止容器)
docker exec -i -t 容器ID/容器名称 /bin/bash
exit
方式2(exit退出会停止容器)
docker attach 容器ID/容器名称
退出快捷键:Ctrl+P+Q,不输入exit直接退出,容器保持运行。
(5) 查看、删除容器
#查看正在运行容器
docker ps
#查看所有容器(含已经停止)
docker ps -a
#删除已经停止容器
docker rm 容器ID/容器名称
#强制删除,容器正在运行也可以删除
docker rm -f 容器ID/容器名称
docker rm test02
docker rm -f test
docker注意事项:
务必注意:每次重启虚拟机都要敲启动docker服务和docker容器!!!!
# 开机的时候手动启动docker服务
systemctl start docker
# 启动docker容器
docker start 你的容器名/容器ID
#进入docker容器
docker exec -it 容器名 /bin/bash
#容器ID通过以下命令查看,第一列就是容器ID
docker ps -a
如果不想这么麻烦也可以直接开启docker服务的开机自启动,但是docker自启动了docker还是要手动启动
# 设置docker开机自动启动
systemctl enable docker
Hadoop三种模式搭建命令与配置
来源:Hadoop平台搭建与应用(第2版)微课版,基于Docker CentOS7,Hadoop‑2.7.7,JDK‑1.8.0_121
一、基础环境准备(Docker、JDK、Hadoop、SSH)
1. Docker启动、拉取镜像、创建容器
# 启动docker
systemctl start docker
# 查看docker状态
systemctl status docker
# 拉取centos7镜像
docker pull centos:7
单机模式容器创建
docker run -dit -h hadoop –name hadoop –privileged=true centos:7 init
2. 复制JDK、Hadoop到容器,解压重命名
# 宿主机复制tar包进容器
docker cp /opt/jdk-8u121-linux-x64.tar.gz hadoop:/opt/
docker cp /opt/hadoop-2.7.7.tar.gz hadoop:/opt/
# 进入容器
docker exec -it hadoop bash
cd /opt
# 解压JDK
tar -zxvf jdk-8u121-linux-x64.tar.gz -C /usr/lib
cd /usr/lib
mv jdk1.8.0_121 jdk1.8.0
3. 配置用户环境变量 ~/.bashrc
vi ~/.bashrc
文件末尾添加:
export JAVA_HOME=/usr/lib/jdk1.8.0
PATH=$PATH:$JAVA_HOME/bin
生效并验证:
source ~/.bashrc
java -version
4. Hadoop解压、配置HADOOP_HOME环境变量
cd /opt
tar -zxvf hadoop-2.7.7.tar.gz -C /usr/local
cd /usr/local
mv hadoop-2.7.7 hadoop
vi ~/.bashrc
追加:
export HADOOP_HOME=/usr/local/hadoop
PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source ~/.bashrc
5. 修改 hadoop‑env.sh
cd /usr/local/hadoop/etc/hadoop
vi hadoop-env.sh
添加:
export JAVA_HOME=/usr/lib/jdk1.8.0
6.换源(清华源)
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
cat > /etc/yum.repos.d/CentOS-Base.repo << 'EOF'
[base]
name=CentOS-$releasever – Base – mirrors.tuna.tsinghua.edu.cn
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.9.2009/os/$basearch/
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos/RPM-GPG-KEY-CentOS-7
[updates]
name=CentOS-$releasever – Updates – mirrors.tuna.tsinghua.edu.cn
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.9.2009/updates/$basearch/
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos/RPM-GPG-KEY-CentOS-7
[extras]
name=CentOS-$releasever – Extras – mirrors.tuna.tsinghua.edu.cn
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.9.2009/extras/$basearch/
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos/RPM-GPG-KEY-CentOS-7
[centosplus]
name=CentOS-$releasever – Plus – mirrors.tuna.tsinghua.edu.cn
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.9.2009/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos/RPM-GPG-KEY-CentOS-7
EOF
yum clean all
yum makecache
7. SSH免密登录配置
# 设置root密码
passwd
# 安装ssh相关包
yum install -y which openssh openssh-server openssh-clients net-tools
# 开启ssh服务
systemctl start sshd
# 生成密钥(回车三次)
ssh-keygen -t rsa
# 公钥写入认证文件
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
# 验证免密
ssh localhost
二、单机模式验证(WordCount)
# 启动hadoop
start-all.sh
# 查看进程
jps
# hdfs创建目录
hdfs dfs -mkdir -p /user/root/input
# 新建测试文件
vi /usr/local/hadoop/wordcount.txt
# 内容:
# hello hadoop
# hello java
# hello world
# 本地上传至hdfs
hadoop dfs -copyFromLocal /usr/local/hadoop/wordcount.txt input
# 运行wordcount示例jar
hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount input output
# 查看输出结果
cat output/part-r-00000
三、伪分布式模式安装配置
1. 创建带端口映射的docker容器
退出刚才的容器
exit
注意:第二的容器创建的时候一定要把第一个hadoop容器关掉
docker stop hadoop
创建容器第二个容器master容器
docker run -dit -h master –name master -p 50070:50070 –privileged=true centos:7 init
后续JDK、Hadoop、SSH配置步骤同单机模式。
2. 复制JDK、Hadoop到容器,解压重命名
# 宿主机复制tar包进容器
docker cp /opt/jdk-8u121-linux-x64.tar.gz master:/opt/
docker cp /opt/hadoop-2.7.7.tar.gz master:/opt/
# 进入容器
docker exec -it master bash
cd /opt
# 解压JDK
tar -zxvf jdk-8u121-linux-x64.tar.gz -C /usr/lib
cd /usr/lib
mv jdk1.8.0_121 jdk1.8.0
3. 配置用户环境变量 ~/.bashrc
vi ~/.bashrc
文件末尾添加:
export JAVA_HOME=/usr/lib/jdk1.8.0
PATH=$PATH:$JAVA_HOME/bin
生效并验证:
source ~/.bashrc
java -version
4. Hadoop解压、配置HADOOP_HOME环境变量
cd /opt
tar -zxvf hadoop-2.7.7.tar.gz -C /usr/local
cd /usr/local
mv hadoop-2.7.7 hadoop
vi ~/.bashrc
追加:
export HADOOP_HOME=/usr/local/hadoop
PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source ~/.bashrc
5.修改 hadoop‑env.sh
cd /usr/local/hadoop/etc/hadoop
vi hadoop-env.sh
添加:
export JAVA_HOME=/usr/lib/jdk1.8.0
6. SSH免密登录配置
# 设置root密码
passwd
# 换源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
cat > /etc/yum.repos.d/CentOS-Base.repo << 'EOF'
[base]
name=CentOS-$releasever – Base – mirrors.tuna.tsinghua.edu.cn
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.9.2009/os/$basearch/
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos/RPM-GPG-KEY-CentOS-7
[updates]
name=CentOS-$releasever – Updates – mirrors.tuna.tsinghua.edu.cn
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.9.2009/updates/$basearch/
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos/RPM-GPG-KEY-CentOS-7
[extras]
name=CentOS-$releasever – Extras – mirrors.tuna.tsinghua.edu.cn
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.9.2009/extras/$basearch/
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos/RPM-GPG-KEY-CentOS-7
[centosplus]
name=CentOS-$releasever – Plus – mirrors.tuna.tsinghua.edu.cn
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.9.2009/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos/RPM-GPG-KEY-CentOS-7
EOF
yum clean all
yum makecache
# 安装ssh相关包
yum install -y which openssh openssh-server openssh-clients net-tools
# 开启ssh服务
systemctl start sshd
# 生成密钥(回车三次)
ssh-keygen -t rsa
# 公钥写入认证文件
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
# 验证免密(输入yes)
ssh localhost
7. 配置core‑site.xml
cd /usr/local/hadoop/etc/hadoop
vi 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/data/tmp</value>
</property>
</configuration>
8. 配置hdfs‑site.xml
vi hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/hadoop/data/tmp/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/hadoop/data/tmp/data</value>
</property>
</configuration>
⚠️ 需要手动创建这几个目录:/usr/local/hadoop/data/tmp、name、data
mkdir -p /usr/local/hadoop/data/tmp/name /usr/local/hadoop/data/tmp/data
9. 配置mapred‑site.xml
# mapred-site.xml 默认不存在,需要从模板复制
cp mapred-site.xml.template mapred-site.xml
vi mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
10. 配置yarn‑site.xml
vi yarn-site.xml
<configuration>
<!– Site specific YARN configuration properties –>
<property>
<name>yarn.nodemanager.aux_services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>localhost</value>
</property>
</configuration>
11. 格式化HDFS、启动集群、验证
# 格式化namenode
hdfs namenode -format
# 启动集群(输入yes)
start-all.sh
# 查看进程
jps
浏览器访问:http://docker宿主机IP:50070
四、集群模式(一主二从 master1、slave1、slave2)
退出刚才的容器
exit
关闭刚才的master容器
docker stop master
4.1 创建 Docker 自定义网桥
docker network create –subnet=172.18.0.0/24 –gateway=172.18.0.1 hadoop
4.2 创建 3 台容器
# master1
docker run -dit -h master1 –name master1 –network=hadoop –ip=172.18.0.2 –privileged=true -p 50070:50070 -p 8088:8088 centos:7 init
# slave1
docker run -dit -h slave1 –name slave1 –network=hadoop –ip=172.18.0.3 –privileged=true -p 8089:8088 centos:7 init
# slave2
docker run -dit -h slave2 –name slave2 –network=hadoop –ip=172.18.0.4 –privileged=true -p 8090:8088 centos:7 init
# 查看网桥信息
docker network inspect hadoop
4.3 master1 环境准备
4.3.1 复制 JDK、Hadoop 到 master1
# 复制 JDK、Hadoop 到 master1
docker cp /opt/jdk-8u121-linux-x64.tar.gz master1:/opt/
docker cp /opt/hadoop-2.7.7.tar.gz master1:/opt/
4.3.2 进入 master1,解压 JDK 和 Hadoop
# 进入 master1 容器
docker exec -it master1 bash
# 切换到 /opt 目录,准备解压
cd /opt
解压 JDK
# 解压 JDK 到 /usr/lib
tar -zxvf jdk-8u121-linux-x64.tar.gz -C /usr/lib
# 进入 /usr/lib,把解压后的目录重命名为 jdk1.8.0
cd /usr/lib
mv jdk1.8.0_121 jdk1.8.0
解压 Hadoop
# 回到 /opt
cd /opt
# 解压 Hadoop 到 /usr/local
tar -zxvf hadoop-2.7.7.tar.gz -C /usr/local
# 进入 /usr/local,把解压后的目录重命名为 hadoop
cd /usr/local
mv hadoop-2.7.7 hadoop
4.3.3 配置环境变量 ~/.bashrc
# 编辑当前用户的环境变量文件
vi ~/.bashrc
在文件末尾追加:
export JAVA_HOME=/usr/lib/jdk1.8.0
export HADOOP_HOME=/usr/local/hadoop
PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
生效并验证:
# 让环境变量立即生效
source ~/.bashrc
# 验证 Java 是否配置成功
java -version
# 验证 Hadoop 是否配置成功
hadoop version
4.3.4 修改 hadoop-env.sh
# 切换到 Hadoop 配置目录
cd /usr/local/hadoop/etc/hadoop
# 编辑 hadoop-env.sh
vi hadoop-env.sh
添加:
# 指定 JDK 路径,供 Hadoop 各组件使用,这个里面已经有一句记得把原本的那句删掉
export JAVA_HOME=/usr/lib/jdk1.8.0
![![[Pasted image 20260917011040.png|318]]](https://www.171host.com/wp-content/uploads/2026/10/20261005215121-6ac41bd90f45d.png)
3台容器全部要:设置root密码、安装yum软件包、启动sshd;master1做ssh免密,ssh‑copy‑id把公钥分发到master1、slave1、slave2。
4.4 slave1 节点操作
只做环境准备,不做密钥分发。
# 进入slave1
docker exec -it slave1 bash
4.4.1 设置 root 密码
passwd
4.4.2 换源(清华源)
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
cat > /etc/yum.repos.d/CentOS-Base.repo << 'EOF'
[base]
name=CentOS-$releasever – Base – mirrors.tuna.tsinghua.edu.cn
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.9.2009/os/$basearch/
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos/RPM-GPG-KEY-CentOS-7
[updates]
name=CentOS-$releasever – Updates – mirrors.tuna.tsinghua.edu.cn
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.9.2009/updates/$basearch/
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos/RPM-GPG-KEY-CentOS-7
[extras]
name=CentOS-$releasever – Extras – mirrors.tuna.tsinghua.edu.cn
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.9.2009/extras/$basearch/
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos/RPM-GPG-KEY-CentOS-7
[centosplus]
name=CentOS-$releasever – Plus – mirrors.tuna.tsinghua.edu.cn
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.9.2009/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos/RPM-GPG-KEY-CentOS-7
EOF
yum clean all
yum makecache
4.4.3 安装相关包
yum install -y which openssh openssh-server openssh-clients net-tools
4.4.4 启动 sshd
systemctl start sshd
不需要在 slave1 上 ssh-keygen,也不需要在 slave1 上 ssh-copy-id。公钥由 master1 统一分发过来。
4.5 slave2 节点操作
与 slave1 完全相同,只做环境准备。
# 进入slave2
docker exec -it slave2 bash
4.5.1 设置 root 密码
passwd
4.5.2 换源(清华源)
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
cat > /etc/yum.repos.d/CentOS-Base.repo << 'EOF'
[base]
name=CentOS-$releasever – Base – mirrors.tuna.tsinghua.edu.cn
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.9.2009/os/$basearch/
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos/RPM-GPG-KEY-CentOS-7
[updates]
name=CentOS-$releasever – Updates – mirrors.tuna.tsinghua.edu.cn
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.9.2009/updates/$basearch/
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos/RPM-GPG-KEY-CentOS-7
[extras]
name=CentOS-$releasever – Extras – mirrors.tuna.tsinghua.edu.cn
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.9.2009/extras/$basearch/
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos/RPM-GPG-KEY-CentOS-7
[centosplus]
name=CentOS-$releasever – Plus – mirrors.tuna.tsinghua.edu.cn
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.9.2009/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos/RPM-GPG-KEY-CentOS-7
EOF
yum clean all
yum makecache
4.5.3 安装 ssh 相关包
yum install -y which openssh openssh-server openssh-clients net-tools
4.5.4 启动 sshd
systemctl start sshd
同样,不需要 ssh-keygen,不需要 ssh-copy-id。
4.6 master1 节点操作
4.6.0 进入 master1
docker exec -it master1 bash
4.6.1 设置 root 密码
passwd
4.6.2 换源(清华源)
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
cat > /etc/yum.repos.d/CentOS-Base.repo << 'EOF'
[base]
name=CentOS-$releasever – Base – mirrors.tuna.tsinghua.edu.cn
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.9.2009/os/$basearch/
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos/RPM-GPG-KEY-CentOS-7
[updates]
name=CentOS-$releasever – Updates – mirrors.tuna.tsinghua.edu.cn
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.9.2009/updates/$basearch/
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos/RPM-GPG-KEY-CentOS-7
[extras]
name=CentOS-$releasever – Extras – mirrors.tuna.tsinghua.edu.cn
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.9.2009/extras/$basearch/
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos/RPM-GPG-KEY-CentOS-7
[centosplus]
name=CentOS-$releasever – Plus – mirrors.tuna.tsinghua.edu.cn
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.9.2009/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos/RPM-GPG-KEY-CentOS-7
EOF
yum clean all
yum makecache
4.6.3 安装相关包
yum install -y which openssh openssh-server openssh-clients net-tools
4.6.4 启动 sshd
systemctl start sshd
4.6.5 生成密钥对
# 一路回车(三次)
ssh-keygen -t rsa
cd ~/.ssh
4.6.6 免密分发(master1 上执行这三条)
ssh-copy-id master1
ssh-copy-id slave1
ssh-copy-id slave2
执行 ssh-copy-id slave1、ssh-copy-id slave2 时,第一次会提示 yes/no,输入 yes,然后输入对应主机的 root 密码。
4.6.7 验证免密
ssh master1
exit
ssh slave1
exit
ssh slave2
exit
能直接进入不输密码,即成功。
4.7 集群模式配置文件(master1 节点)
进入 master1
docker exec -it master1 bash
切换到 hadoop 配置目录
cd /usr/local/hadoop/etc/hadoop
4.7.1 修改 slaves(workers)
vi slaves
删除 localhost,写入:
slave1
slave2

4.7.2 core‑site.xml
vi core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/data/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
</configuration>
4.7.3 hdfs‑site.xml
vi hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master1:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/hadoop/data/tmp/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/hadoop/data/tmp/data</value>
</property>
</configuration>
4.7.4 mapred‑site.xml
cp mapred-site.xml.template mapred-site.xml
vi mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master1:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master1:19888</value>
</property>
</configuration>
4.7.5 yarn‑site.xml
vi yarn-site.xml
<configuration>
<!– Site specific YARN configuration properties –>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master1</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
4.8 将 master1 的 JDK、Hadoop、环境变量分发到 slave1、slave2
# 分发bashrc
scp -r ~/.bashrc slave1:~/.bashrc
scp -r ~/.bashrc slave2:~/.bashrc
# 分发hadoop
scp -r /usr/local/hadoop/ slave1:/usr/local
scp -r /usr/local/hadoop/ slave2:/usr/local
# 分发jdk
scp -r /usr/lib/jdk1.8.0 slave1:/usr/lib
scp -r /usr/lib/jdk1.8.0 slave2:/usr/lib
# 在slave1、slave2分别执行(注意:这里不是在master1里面执行的,是分别在slave1和slave2里面运行)
source ~/.bashrc
4.9 集群启动与验证
# master1格式化namenode(在master1里面执行)
hdfs namenode -format
# 启动全部集群
start-all.sh
# 各节点执行jps查看进程
jps
Web 访问:
- HDFS 页面:http://宿主机IP:50070
- YARN 页面:http://宿主机IP:8088
比如我是(因为我前面配置静态IP的时候设置的是这个IP): - HDFS 页面:http://192.168.196.101:50070
- YARN 页面:http://192.168.196.101:8088


5.Hadoop 基本操作
① 创建目录
# 在 HDFS 根目录下创建 input 目录
hdfs dfs -mkdir /input
# 查看 HDFS 根目录,确认创建成功
hdfs dfs -ls /
如果是多级目录,可以加 -p:
hdfs dfs -mkdir -p /input/data
② 上传文件
先在本地创建一个测试文件:
# 在本地 /root 下创建 test.txt
cat > /root/test.txt << 'EOF'
hello hadoop
hello java
hello world
EOF
上传到 HDFS:
# 把本地 /root/test.txt 上传到 HDFS 的 /input 目录
hdfs dfs -put /root/test.txt /input
查看是否上传成功:
hdfs dfs -ls /input
③ 下载文件
# 把 HDFS 上的 /input/test.txt 下载到本地 /root 下
hdfs dfs -get /input/test.txt /root/
④ 查看文件内容
# 查看 HDFS 上 /input/test.txt 的内容
hdfs dfs -cat /input/test.txt
备注:
如果原本换的yum源(阿里源)下载太慢(正常一分钟不到),可以使用一下的清华源:
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
cat > /etc/yum.repos.d/CentOS-Base.repo << 'EOF'
[base]
name=CentOS-$releasever – Base – mirrors.tuna.tsinghua.edu.cn
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.9.2009/os/$basearch/
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos/RPM-GPG-KEY-CentOS-7
[updates]
name=CentOS-$releasever – Updates – mirrors.tuna.tsinghua.edu.cn
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.9.2009/updates/$basearch/
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos/RPM-GPG-KEY-CentOS-7
[extras]
name=CentOS-$releasever – Extras – mirrors.tuna.tsinghua.edu.cn
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.9.2009/extras/$basearch/
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos/RPM-GPG-KEY-CentOS-7
[centosplus]
name=CentOS-$releasever – Plus – mirrors.tuna.tsinghua.edu.cn
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.9.2009/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos/RPM-GPG-KEY-CentOS-7
EOF
yum clean all
yum makecache
阿里源:
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
cat > /etc/yum.repos.d/CentOS-Base.repo << 'EOF'
[base]
name=CentOS-$releasever – Base – mirrors.aliyun.com
baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/os/$basearch/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
[updates]
name=CentOS-$releasever – Updates – mirrors.aliyun.com
baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/updates/$basearch/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
[extras]
name=CentOS-$releasever – Extras – mirrors.aliyun.com
baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/extras/$basearch/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
[centosplus]
name=CentOS-$releasever – Plus – mirrors.aliyun.com
baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
EOF
yum clean all
yum makecache



实现100%通过率-171主机测评](https://www.171host.com/wp-content/uploads/2026/10/20261026130223-6adf4f5f34184-220x80.gif)

