Ezekielx
Ezekielx
发布于 2026-03-11 / 10 阅读
0
0

Hadoop 伪分布式集群环境配置

一、虚拟机下载

虚拟机选择 VMware Workstation Pro,这是官网下载地址:Fusion and Workstation | VMware

f4u1NxVW-1.png

f4u1NxVW-2.png

随便吐槽一下,我不知道把下载链接藏这么深是何意味😕?而且你不登录还下载(下载链接会验证你是否登录)不了,本来网站就在国外,没有梯子网站都打不开,更别说注册账号了😥。

这里是放百度网盘上的官网下载的安装包,如果实在登录不上去就用百度网盘慢慢下吧。

VMware Workstation Pro 17 百度网盘下载链接:https://pan.baidu.com/s/1-e6lWJHMtQ_6ha_0Lnin5w?pwd=tcdb

VMware Workstation Pro 25H2 百度网盘下载链接:https://pan.baidu.com/s/1gtJnZkblIJoSvceF7-wjjg?pwd=cw54

f4u1NxVW-3.png

这里有两个版本,一个 VMware Workstation Pro 17 和 VMware Workstation Pro 25H2。这个 25H2 版本是 VMware 被 Broadcom 收购后出的新版本,版本号命名改成和微软一样的命名法。

按道理来说 25H2 多了很多新功能,但作为一款支持多语言的软件偏偏把简体中文砍了🤗。

所以选什么版本看自己选择,想要体验新功能就 25H2(但其实一般用户也不会在意),想要中文就 17。

二、系统镜像下载

大部分教程都是选的 CentOS 7,这是一个很老的 Linux 发行版了,学习当然没问题,但已经停止支持了。

我这里就选 Rocky 10 作为系统镜像,Rocky 也相当于 CentOS 的后继吧(可以看我之前写的:CentOS 停更之后:Rocky Linux 如何接棒 Red Hat 生态 - 滕王阁)。

官网下载地址:Download - Rocky Linux

f4u1NxVW-4.png

下载 DVD 镜像(完整版),Boot 镜像只包含启动程序,安装时需要联网下载软件,Minimal 最小系统镜像只安装最基础的系统,没有图形和额外软件。

三、安装 Linux 虚拟机

左上角选择安装虚拟机,选择下载的系统镜像和虚拟机安装位置。

f4u1NxVW-5.png

f4u1NxVW-6.png

f4u1NxVW-7.png

f4u1NxVW-8.png

选择磁盘空间大小,默认 20G 一般是够的,下面那个选项是是否分割虚拟磁盘为多个文件,上面都有介绍,改不改没关系。

f4u1NxVW-9.png

后面的是虚拟硬件的详细设置,也没什么可改的,根据你自己的内存大小把虚拟内存调一调,最小一般 4G 就可以了😀。

f4u1NxVW-10.png

f4u1NxVW-11.png

如果启动后出现如下报错,可以尝试把 3D graphics 关了。

f4u1NxVW-12.png

VMware Workstation unrecoverable error: (host-8868)

Third party host clock rate has already been set.

A log file is available in "C:\Users\Ezekielx\Documents\Virtual Machines\Rocky Linux 64-bit\vmware.log".

You can request support.

To collect data to submit to VMware support, choose "Collect Support Data" from the Help menu.

You can also run the "vm-support" script in the Workstation folder directly.

We will respond on the basis of your support entitlement.

f4u1NxVW-13.png

进入系统后选择第一项安装系统。

f4u1NxVW-14.png

系统语言选英文选中文都可以,都不影响。

f4u1NxVW-15.png

来的引导界面后选择磁盘(就一个可选),创建 root 账户(允许 SSH 密码登录选上,这样一开始配环境方便一点),下面那个普通用户可以不用创建。

f4u1NxVW-16.png

f4u1NxVW-17.png

如果不想要 GUI 界面(只有命令行界面),可以在软件选择那里选服务器或者最小化安装,这个全看你自己,图方便的话直接默认带 GUI 的就完事了。

f4u1NxVW-18.png

设置完后开始安装。

进去后会要你创建一个普通用户,随便建一个就好了,不重要,反正后面直接用 root 用户就行了😋。

四、配置网络和主机名

为了让 Linux 虚拟机能访问互联网和其他虚拟机及你的真实物理机,需要连接到 VMware Workstation Pro 自带的 NAT 网络 VMnet8。

打开终端。

f4u1NxVW-19.png

输入:

nmtui

使用图形化界面修改主机配置(和直接改网络配置文件是一样的,nmtui 带图形界面方便一点)。

编辑连接,选择 ens 开头的配置,IPv4 改为手动。

f4u1NxVW-20.png

接下来打开 VMware Workstation,在 [Edit - Virtual Network Editor] 中查看 NAT 模式下的虚拟网卡 VMnet8 的网段(我的是 192.168.144.0)。

f4u1NxVW-21.png

回到虚拟机中,将红框部分替换为刚刚查看的网段,地址那一栏红框外的那个三位数可以从 3 ~ 254 随便选一个填。

f4u1NxVW-22.png

回到 nmtui 的主页,在启用连接中关闭后再打开一次 ens 开头的配置(就是刷新一下)。

f4u1NxVW-23.png

再回到主页,选择设置系统主机名,自己改一个喜欢的名字。

f4u1NxVW-24.png

接下来更改物理机和虚拟机的 hosts 文件,让其能识别主机名与 IP 地址对应。

在虚拟机终端中输入:

sudo vim /etc/hosts

i 进入编辑模式,在末尾添加如下字段:

# Virtual Machine
192.168.144.144 RockyLinux

Esc,输入 :wq 回车保存并退出。

f4u1NxVW-25.png

在你自己的 Windows 中的以管理员身份运行记事本,左上角 [文件 - 打开],打开 C:\Windows\System32\drivers\etc\hosts 路径下的文件,在末尾添加相同的字段。

f4u1NxVW-26.png

f4u1NxVW-27.png

物理机或者虚拟机都可以用以下命令看是否配置成功:

ping RockyLinux
PS C:\Users\Ezekielx> ping RockyLinux

正在 Ping RockyLinux [192.168.144.144] 具有 32 字节的数据:
来自 192.168.144.144 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.144.144 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.144.144 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.144.144 的回复: 字节=32 时间<1ms TTL=64

192.168.144.144 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 0ms,最长 = 0ms,平均 = 0ms
PS C:\Users\Ezekielx>

类似于这样就成功了。

最后关闭防火墙,否则会阻止物理机访问 WebUI。

systemctl disable firewalld
systemctl stop firewalld

五、创建 Hadoop 运行用户

在安装和运行 Hadoop 时,通常不建议使用 root 用户,而是创建一个专门的普通用户(如 hadoop)来运行 Hadoop 服务。

创建 hadoop 用户:

useradd hadoop
passwd hadoop

六、Hadoop 启动环境准备

官方文档地址:https://hadoop.apache.org/docs/stable/ 。

如果想进一步了解可以去参考一下,不过可惜的是没有中文,网上的机翻中文网太生硬了,又完全看不了🥲。

1、安装 Hadoop

Hadoop 官网下载地址:https://hadoop.apache.org/releases.html

选个稳定一点的 3.3.6 下载(选那个 Binary download)😶‍🌫️。

f4u1NxVW-28.png

f4u1NxVW-29.png

现在要将下载好的压缩包上传到虚拟机里面,这个有很多办法,比如开个共享文件夹,scp 命令上传......

这里还是建议下一个 SSH 软件远程连接一下,大部分 SSH 软件都支持文件管理🤔,而且如果你添加了 GUI,直接用 GUI 的终端还会有一点卡😑。我用的 MobaXterm 连接的,具体使用方法我以前的文章写过,可以参考:MobaXterm:强大的远程网络工具,SSH 远程连接功能的使用 - 滕王阁

而且后面的操作都是使用 root 用户,如果登录不是用的 root 用户记得切换一下(切换命令:su root)。

SSH 连接成功后在左边侧栏的文件浏览器中进入 /opt 目录(也可以放别的目录),把下载好的压缩包拖进去就能上传了。

终端依次输入,解压并删除压缩包:

cd /opt
tar -zxvf hadoop-3.3.6.tar.gz
rm -rf hadoop-3.3.6.tar.gz

将 Hadoop 安装目录的使用者修改为 hadoop 用户(Hadoop 安装目录位于 /opt,此目录对于其他用户 hadoop 没有写入权限,需要修改 Hadoop 安装目录的所有者)。

chown -R hadoop:hadoop /opt/hadoop-3.3.6

然后配置 Hadoop 的环境变量。

终端输入:

vim /etc/profile.d/hadoop_home.sh

i 进入编辑模式,添加:

export HADOOP_HOME=/opt/hadoop-3.3.6

export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

Esc,输入 :wq 回车保存并退出。

f4u1NxVW-30.png

刷新环境变量:

source /etc/profile

验证是否配置成功:

hadoop version
[root@RockyLinux opt]# source /etc/profile
[root@RockyLinux opt]# hadoop version
Hadoop 3.3.6
Source code repository https://github.com/apache/hadoop.git -r 1be78238728da9266a4f88195058f08fd012bf9c
Compiled by ubuntu on 2023-06-18T08:22Z
Compiled on platform linux-x86_64
Compiled with protoc 3.7.1
From source with checksum 5652179ad55f76cb287d9c633bb53bbd
This command was run using /opt/hadoop-3.3.6/share/hadoop/common/hadoop-common-3.3.6.jar
[root@RockyLinux opt]#

像这样就可以下一步了😋。

2、安装 JDK

Hadoop 3.3.6 只支持 Java 8 和 Java 11(Hadoop Java Versions - Hadoop - Apache Software Foundation),我这里用 Java 8 的 JDK。

这里用 OpenJDK 的发行版 Corretto 8,下载地址:Downloads for Amazon Corretto 8 - Amazon Corretto 8

f4u1NxVW-31.png

Corretto 8 百度网盘下载链接:https://pan.baidu.com/s/1rluJoZhO2aQOXQebesJ9Rw?pwd=lny9

和下载 Hadoop 一样的操作,上传虚拟机后终端输入:

cd /opt
tar -zxvf amazon-corretto-8.482.08.1-linux-x64.tar.gz
mv amazon-corretto-8.482.08.1-linux-x64 amazon-corretto-8
rm -rf amazon-corretto-8.482.08.1-linux-x64.tar.gz

然后配置 JDK 的环境变量。

一样的,终端输入:

vim /etc/profile.d/java_home.sh

添加:

export JAVA_HOME=/opt/amazon-corretto-8

export PATH=$PATH:$JAVA_HOME/bin

f4u1NxVW-32.png

刷新环境变量:

source /etc/profile

验证是否配置成功:

java -version
[root@RockyLinux opt]# source /etc/profile
[root@RockyLinux opt]# java -version
openjdk version "1.8.0_482"
OpenJDK Runtime Environment Corretto-8.482.08.1 (build 1.8.0_482-b08)
OpenJDK 64-Bit Server VM Corretto-8.482.08.1 (build 25.482-b08, mixed mode)
[root@RockyLinux opt]#

安装成功应该像上面这样。

接下来指定 Hadoop 运行使用的 JDK 路径🤗。

3、配置 Hadoop 运行使用的 JDK 路径

官方文档参考:

f4u1NxVW-33.png

编辑 Hadoop 环境脚本:

vim /opt/hadoop-3.3.6/etc/hadoop/hadoop-env.sh

找到 export JAVA_HOME= 这一行,修改为:

export JAVA_HOME=/opt/amazon-corretto-8

如果你使用是的 MobaXterm,觉得命令行太难编辑,可以直接在 MobaXterm 左边的文件浏览器打开你要编辑的文件,使用物理机上的编辑软件(记事本、VSCode)进行编辑。

f4u1NxVW-34.png

七、Hadoop 伪分布式环境配置

1、修改配置文件

首先配置核心模块 HDFS(分布式存储系统)和 Yarn(集群资源管理和任务调度)。官方文档参考:

f4u1NxVW-35.png

编辑 /opt/hadoop-3.3.6/etc/hadoop/core-site.xml 配置文件:

vim /opt/hadoop-3.3.6/etc/hadoop/core-site.xml

添加以下内容:

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://RockyLinux:9000</value>
    </property>
</configuration>

f4u1NxVW-36.png

fs.defaultFS 指定 Hadoop 默认访问的文件系统地址。注意<value> 中的 RockyLinux 代表是主机名,如果你和我不同,改成你自己的(你可以理解为网址,是不分大小写的)!

编辑 /opt/hadoop-3.3.6/etc/hadoop/hdfs-site.xml 配置文件:

vim /opt/hadoop-3.3.6/etc/hadoop/hdfs-site.xml

添加以下内容:

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

f4u1NxVW-37.png

dfs.replication 指定 HDFS 数据块副本数量,即每个数据块保存多少份。由于伪分布式只有 一个 DataNode,如果设置超过 1 会报错。

然后配置让 Yarn 上以伪分布式模式运行 MapReduce 作业。官方文档参考:

f4u1NxVW-38.png

编辑 /opt/hadoop-3.3.6/etc/hadoop/mapred-site.xml 配置文件:

vim /opt/hadoop-3.3.6/etc/hadoop/mapred-site.xml

添加以下内容:

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

f4u1NxVW-39.png

mapreduce.framework.name 用于指定 MapReduce 的运行模式为 yarn。MapReduce 有两种运行方式:local(本地模式,单进程)、yarn(yarn 集群上运行)。

编辑 /opt/hadoop-3.3.6/etc/hadoop/yarn-site.xml 配置文件:

vim /opt/hadoop-3.3.6/etc/hadoop/yarn-site.xml

添加以下内容:

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>

f4u1NxVW-40.png

yarn.nodemanager.aux-services 用于为 MapReduce 应用设置 Shuffle 服务。Shuffle 服务用于将 Map 节点的输出数据传给 Reduce 节点。

2、设置 SSH 免密登录

你可能会疑问,为什么明明伪分布式模式就在一台机器上运行,设置 SSH 免密是要登录到哪台机器去🧐?

虽然伪分布式只有一台机器,但 Hadoop 仍然按集群逻辑运行,而 Hadoop 在各个节点执行命令又是通过 SSH 的,使用如果不配置 SSH 免密,Hadoop 每次操作节点时都要提示你输入密码,所以 SSH 免密是必要的👻。

首先切换到运行 Hadoop 的 hadoop 用户:

su hadoop

生成 SSH 公私钥(输入命令后一直回车就可以了,不用管那些提示):

ssh-keygen -t rsa
[hadoop@RockyLinux ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hadoop/.ssh/id_rsa):
Created directory '/home/hadoop/.ssh'.
Enter passphrase for "/home/hadoop/.ssh/id_rsa" (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/hadoop/.ssh/id_rsa
Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:8DwG5mMlTpbLj8mZ/s9BIXRU2Y1IKQrje2p6m/bCk4s hadoop@RockyLinux
The key's randomart image is:
+---[RSA 3072]----+
|        ..ooo= o |
|      oo .. + o .|
|     .Ooo...     |
|     B.O.. .     |
|      B.S .      |
|     o.O.o       |
|     .*+. .      |
|     oX. . .     |
|    E==Bo.o      |
+----[SHA256]-----+
[hadoop@RockyLinux ~]$

之后复制公钥到授权文件:

ssh-copy-id RockyLinux
[hadoop@RockyLinux ~]$ ssh-copy-id RockyLinux
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/hadoop/.ssh/id_rsa.pub"
The authenticity of host 'rockylinux (192.168.144.144)' can't be established.
ED25519 key fingerprint is SHA256:sboDlw6zOneUBsH7uIXSAtByegm3B6voRFlMFWbnxS0.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
hadoop@rockylinux's password:

Number of key(s) added: 1

Now try logging into the machine, with: "ssh 'RockyLinux'"
and check to make sure that only the key(s) you wanted were added.

[hadoop@RockyLinux ~]$

执行命令后第一次询问输入 yes,第二次输入 root 用户密码,像上面这样。

八、运行 Hadoop

1、启动 Hadoop

首先格式化文件系统:

hdfs namenode -format

启动文件管理系统 HDFS(NameNode + DataNode):

start-dfs.sh

启动后会运行:

  • NameNode
  • DataNode
  • SecondaryNameNode

启动资源管理系统 Yarn:

start-yarn.sh

启动后会运行:

  • ResourceManager
  • NodeManager

参考是否运行成功:

jps
[hadoop@RockyLinux ~]$ jps
13317 SecondaryNameNode
13765 NodeManager
13096 DataNode
12957 NameNode
13645 ResourceManager
14190 Jps
[hadoop@RockyLinux ~]$

启动成功应该能看到以上内容😋。

也开始使用:

start-all.sh

直接启动所有运行在 Hadoop 上的软件,比如 HBase、Zookeeper 等。而上面两条命令是分开启动 HDFS 和 Yarn。

2、访问 WebUI

HDFS NameNode WebUI 访问地址:http://RockyLinux:9870/ 。

f4u1NxVW-41.png

Yarn ResourceManager WebUI 访问地址:http://RockLinux:8088/ 。

f4u1NxVW-42.png

2、停止 Hadoop

停止文件管理系统 HDFS:

stop-dfs.sh

停止资源管理系统 Yarn:

stop-yarn.sh

同样的一键停止脚本:

stop-all.sh

九、后记

由于放假手贱重装系统了,想着反正要重装环境就干脆写一篇文章的,没想到这么难写(做起来倒不难)😭。

马上要准备考研了,花时间到这种小癖好上自己真的有点绷不住😶‍🌫️。


评论