VMware 中部署 HDFS 集群环境(Hadoop 3.4.3)完整指南

VMware 中部署 HDFS 集群环境(Hadoop 3.4.3)完整指南

本文详细记录从零开始在 VMware 虚拟机中搭建 3 节点 Hadoop HDFS 分布式文件系统集群的全过程,基于 CentOS 系统,Hadoop 版本 3.4.3。


一、环境准备

1.1 硬件与软件环境

项目 配置
虚拟化平台 VMware Workstation / ESXi
操作系统 CentOS 7/8 或兼容的 Linux 发行版
节点数量 3 台(node1, node2, node3)
单节点配置 2核 CPU / 4G 内存 / 20G 磁盘
JDK 版本 OpenJDK 17(或 JDK 8/11)
Hadoop 版本 3.4.3

1.2 网络规划

节点 IP 地址 角色
node1 192.168.19.129 NameNode + DataNode + SecondaryNameNode
node2 192.168.19.xxx DataNode
node3 192.168.19.xxx DataNode

1.3 基础环境配置

确保三台虚拟机:

  • 网络互通(互相能 ping 通)
  • 已配置主机名和 /etc/hosts 解析
  • 已关闭防火墙或开放必要端口
  • 已配置 SSH 免密登录(后续详细说明)
bash 复制代码
# 配置主机名
hostnamectl set-hostname node1  # node2/node3 同理

# 配置 hosts
cat >> /etc/hosts << 'EOF'
192.168.19.129 node1
192.168.19.130 node2
192.168.19.131 node3
EOF

二、JDK 环境安装

Hadoop 基于 Java 开发,必须预先安装 JDK。

bash 复制代码
# 检查系统是否已有 JDK
java -version

# 查找 JDK 安装路径
find /usr -name "java" 2>/dev/null

如果未安装,使用 yum 安装:

bash 复制代码
yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel

注意:Hadoop 3.4.x 官方推荐 JDK 8 或 JDK 11。本文使用系统自带的 OpenJDK 17,测试可用但生产环境建议用 JDK 8。


三、Hadoop 安装与分发

3.1 下载并解压 Hadoop

node1 上执行:

bash 复制代码
# 创建安装目录
mkdir -p /export/server

# 下载 Hadoop(或提前下载好上传到 /root/Downloads)
cd /opt
wget https://archive.apache.org/dist/hadoop/common/hadoop-3.4.3/hadoop-3.4.3.tar.gz

# 解压到目标目录
tar -zxvf hadoop-3.4.3.tar.gz -C /export/server/

常见问题 :如果在非文件所在目录执行 tar,会报 No such file or directory。请使用绝对路径或先 cd 到文件目录。

3.2 创建软链接

bash 复制代码
ln -s /export/server/hadoop-3.4.3 /export/server/hadoop

软链接便于版本管理和后续脚本引用。

3.3 分发到 node2、node3

bash 复制代码
cd /export/server

# 确保目标节点有 /export/server 目录
ssh node2 "mkdir -p /export/server"
ssh node3 "mkdir -p /export/server"

# 复制 Hadoop 安装包
scp -r hadoop-3.4.3 node2:/export/server/
scp -r hadoop-3.4.3 node3:/export/server/

# 在 node2、node3 创建软链接
ssh node2 "ln -s /export/server/hadoop-3.4.3 /export/server/hadoop"
ssh node3 "ln -s /export/server/hadoop-3.4.3 /export/server/hadoop"

常见问题 :如果软链接显示为红色,说明目标目录不存在(scp 未成功)。重新复制并创建软链接即可。


四、环境变量配置

4.1 配置 JAVA_HOME 和 HADOOP_HOME

编辑 /etc/profile,追加以下内容:

bash 复制代码
# Java
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-17.0.15.6-4.ky3_5.kb1.x86_64

# Hadoop
export HADOOP_HOME=/export/server/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

注意:JAVA_HOME 路径根据你的实际 JDK 路径修改。

4.2 同步到所有节点

bash 复制代码
scp /etc/profile node2:/etc/
scp /etc/profile node3:/etc/

# 分别生效
source /etc/profile
ssh node2 "source /etc/profile"
ssh node3 "source /etc/profile"

4.3 验证

bash 复制代码
hadoop version

输出 Hadoop 版本信息即表示配置成功。


五、Hadoop 核心配置

5.1 core-site.xml

bash 复制代码
vim /export/server/hadoop/etc/hadoop/core-site.xml

内容如下:

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://node1:8020</value>
    </property>
    <property>
        <name>io.file.buffer.size</name>
        <value>131072</value>
    </property>
</configuration>

5.2 hdfs-site.xml

bash 复制代码
vim /export/server/hadoop/etc/hadoop/hdfs-site.xml

内容如下:

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>dfs.datanode.data.dir.perm</name>
        <value>700</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/data/nn</value>
    </property>
    <property>
        <name>dfs.namenode.hosts</name>
        <value>node1,node2,node3</value>
    </property>
    <property>
        <name>dfs.blocksize</name>
        <value>268435456</value>
    </property>
    <property>
        <name>dfs.namenode.handler.count</name>
        <value>100</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/data/dn</value>
    </property>
</configuration>

5.3 创建数据目录

bash 复制代码
mkdir -p /data/nn /data/dn

六、创建 hadoop 用户并授权

Hadoop 不建议以 root 用户运行,需要创建专用用户。

6.1 创建用户(三个节点)

bash 复制代码
useradd -m hadoop -s /bin/bash
echo "hadoop" | passwd --stdin hadoop

6.2 配置 sudo 权限

bash 复制代码
echo "hadoop ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers

6.3 配置免密登录

node1 切换到 hadoop 用户:

bash 复制代码
su - hadoop
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa

分发公钥到三个节点:

bash 复制代码
ssh-copy-id hadoop@node1
ssh-copy-id hadoop@node2
ssh-copy-id hadoop@node3

首次需要输入密码 hadoop,之后即可免密登录。

6.4 目录权限授权

bash 复制代码
chown -R hadoop:hadoop /data
chown -R hadoop:hadoop /export

在 node2、node3 上执行相同操作。


七、格式化 NameNode 并启动

7.1 格式化文件系统

仅在 node1 执行一次!

bash 复制代码
su - hadoop
hadoop namenode -format

⚠️ 格式化会清空 HDFS 元数据,生产环境谨慎操作。

7.2 启动 HDFS 集群

bash 复制代码
start-dfs.sh

输出示例:

复制代码
Starting namenodes on [node1]
node1: Authorized users only. All activities may be monitored and reported.
Starting datanodes
node2: Authorized users only. All activities may be monitored and reported.
node3: Authorized users only. All activities may be monitored and reported.
Starting secondary namenodes [node1]

Authorized users only 是 SSH 安全提示,不影响启动。

7.3 验证进程

bash 复制代码
jps

node1 预期输出:

复制代码
NameNode
DataNode
SecondaryNameNode
Jps

node2、node3 预期输出:

复制代码
DataNode
Jps

7.4 Web UI 验证

浏览器访问:

复制代码
http://node1:9870

可以看到:

  • Live Nodes: 3
  • HDFS 容量和使用情况
  • 各 DataNode 状态

八、常见问题与解决

8.1 tar: No such file or directory

原因:执行 tar 命令时不在压缩包所在目录,且未使用绝对路径。

解决

bash 复制代码
tar -zxvf /root/Downloads/hadoop-3.4.3.tar.gz -C /export/server

8.2 软链接显示红色

原因:软链接指向的目标目录不存在。

解决

bash 复制代码
# 重新复制并创建软链接
scp -r /export/server/hadoop-3.4.3 node2:/export/server/
ssh node2 "rm -f /export/server/hadoop && ln -s /export/server/hadoop-3.4.3 /export/server/hadoop"

8.3 命令未找到(start-dfs.sh

原因:环境变量未生效或 PATH 配置错误。

解决

bash 复制代码
# 使用绝对路径执行
/export/server/hadoop/sbin/start-dfs.sh

# 或重新加载环境变量
source /etc/profile

8.4 chown: 无法访问 '/data'

原因:目录不存在。

解决

bash 复制代码
mkdir -p /data/nn /data/dn
chown -R hadoop:hadoop /data

九、HDFS 常用操作

bash 复制代码
# 查看 HDFS 根目录
hdfs dfs -ls /

# 创建目录
hdfs dfs -mkdir /user
hdfs dfs -mkdir /user/hadoop

# 上传文件
hdfs dfs -put localfile.txt /user/hadoop/

# 下载文件
hdfs dfs -get /user/hadoop/localfile.txt ./

# 查看文件内容
hdfs dfs -cat /user/hadoop/localfile.txt

# 删除文件
hdfs dfs -rm /user/hadoop/localfile.txt

十、关闭集群

bash 复制代码
# 关闭 HDFS
stop-dfs.sh

# 或使用绝对路径
/export/server/hadoop/sbin/stop-dfs.sh

总结

本文完整记录了 VMware 环境下 HDFS 集群的部署流程:

  1. ✅ 环境准备(网络、主机名、JDK)
  2. ✅ Hadoop 安装与分发
  3. ✅ 环境变量配置
  4. ✅ 核心配置文件(core-site.xml、hdfs-site.xml)
  5. ✅ hadoop 用户创建与免密登录
  6. ✅ NameNode 格式化与 HDFS 启动
  7. ✅ 常见问题排查

HDFS 作为 Hadoop 生态的基石,掌握其部署和运维是大数据开发的必备技能。后续可以继续配置 YARN(资源调度)和 MapReduce(计算框架),构建完整的大数据平台。

相关推荐
雪碧聊技术10 小时前
Badge 应用场景与落地实践指南
大数据·人工智能
望江东浪10 小时前
我的 Claude Code 效率工具全套配置分享
大数据·elasticsearch·搜索引擎
chaoyuanl11 小时前
现有游乐设施 XR 数字化升级改造方案
大数据·科技·3d·xr·娱乐
LL3344556712 小时前
创业自动化平台怎么选
大数据·人工智能
珠海西格电力13 小时前
云边端协同架构:零碳园区管理系统的技术底座
大数据·运维·人工智能·算法·架构·能源
cc57250265314 小时前
大数据专业是不是热门专业
大数据
汇策研习社14 小时前
StdDev标准差指标深度解析:量化市场波动的核心工具
大数据·经验分享·金融·区块链·fastbull
大大大大晴天14 小时前
Hudi技术内幕: Concurrency Control原理与实践
大数据
阿里云大数据AI技术15 小时前
DataWorks Data Agent 实战课堂(一):解锁你的7×24h全能“数据搭子”DataWorks AI助理!
大数据·人工智能·agent