跳到主要内容VMware 与 CentOS 7 环境下的 Hadoop 伪分布式集群部署实战 | 极客日志Javajava算法
VMware 与 CentOS 7 环境下的 Hadoop 伪分布式集群部署实战
VMware 虚拟机中基于 CentOS 7 搭建 Hadoop 伪分布式集群,需经历环境准备、系统配置、依赖安装及服务调试四个阶段。重点解决 SSH 免密、DNS 解析、JDK 路径识别及权限控制等常见问题。完成 NameNode 格式化与服务启动后,可通过 Web UI 及命令行验证 HDFS 和 YARN 状态,实现大数据环境的本地化落地。
一、基础环境搭建
1.1 系统镜像下载
部署 Hadoop 前,先准备好操作系统。CentOS 7.9 的 ISO 镜像可以从官方归档库获取。
访问链接:CentOS 7.9 归档库
找到并下载 CentOS-7-x86_64-DVD-2009.iso。DVD 版本包含完整软件包,方便后续安装。

1.2 创建新的 VMware 虚拟机
打开 VMware Workstation Pro,选择'创建新的虚拟机'。
为虚拟机命名并指定存储位置,建议放在非系统盘(如 D 盘),避免占用 C 盘空间。

在'简易安装信息'界面预设用户账户和密码,方便后续管理。

选择之前下载的 ISO 镜像文件作为安装来源。

硬件兼容性保持默认,向导类型选'典型'。

1.3 配置虚拟机硬件资源
Hadoop 对计算和内存有一定要求,资源分配直接影响运行效率。
磁盘容量:指定 30GB,选择'将虚拟磁盘拆分成多个文件',便于在不同文件系统间移动。

:选择 NAT 模式。这能让虚拟机通过宿主机共享网络访问互联网,同时形成独立局域网,适合初学者。
网络类型
内存配置:分配 8GB。NameNode 和 ResourceManager 需要一定内存,8GB 可保证伪分布式模式流畅运行。
处理器配置:分配 4 个核心,单节点学习环境足够。
1.4 启动虚拟机并安装 CentOS 7
开启虚拟机,从 ISO 镜像自动开始安装过程。安装完成后重启进入登录界面,输入密码即可。
二、系统基础配置
2.1 网络连通性测试
2.2 关闭防火墙
sudo systemctl stop firewalld
sudo systemctl disable firewalld
2.3 配置 SSH 免密登录
Hadoop 管理脚本需通过 SSH 启动进程。即使伪分布式模式,也需免密登录 localhost。
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys
三、核心依赖安装与问题排查——JDK
Hadoop 基于 Java,必须安装 JDK。这里选用 OpenJDK 8。
3.1 首次尝试安装与权限问题
sudo yum install -y java-1.8.0-openjdk-devel
可能遇到权限报错,提示当前用户不在 sudoers 文件中。
3.2 解决 sudo 权限问题
使用 visudo 编辑 /etc/sudoers 文件,推荐此工具以防语法错误。
在 root ALL=(ALL) ALL 下方添加一行:
your_username ALL=(ALL:ALL) ALL
3.3 配置 DNS 服务器
若安装时报错 Could not resolve host,说明 DNS 未配置。使用 nmtui 工具管理网络。
选择'Edit a connection',找到 IPv4 CONFIGURATION,展开后在 DNS servers 处添加公共 DNS,如 114.114.114.114。
sudo systemctl restart NetworkManager
验证 /etc/resolv.conf 确认 DNS 已生效。
3.4 优化软件源并安装
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
sudo yum clean all
sudo yum makecache
四、Hadoop 安装与伪分布式配置
4.1 下载并解压 Hadoop
推荐使用国内镜像源下载 Hadoop 3.3.6:
wget https://mirrors.aliyun.com/apache/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
tar -zxvf hadoop-3.3.6.tar.gz -C /usr/local/
cd /usr/local/
mv hadoop-3.3.6 hadoop
4.2 配置环境变量
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
4.3 修改核心配置文件
进入 $HADOOP_HOME/etc/hadoop 目录。
hdfs-site.xml:设置副本数为 1(单机模式)。
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
core-site.xml:指定 NameNode 地址。
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
hadoop-env.sh:指定 JAVA_HOME。
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
注意:路径需根据实际安装情况调整,后续排错会展示如何查找精确路径。
五、启动集群与问题排查
5.1 首次启动尝试
start-dfs.sh
start-yarn.sh
若报错不允许以 root 用户启动,这是安全机制。需格式化 NameNode 并切换用户。
警告:此操作只在第一次启动前执行,否则会清空数据。
5.2 解决用户权限问题
sudo useradd hadoop
sudo passwd hadoop
在 hadoop-env.sh 末尾指定服务运行用户:
export HDFS_NAMENODE_USER="hadoop"
export HDFS_DATANODE_USER="hadoop"
export YARN_RESOURCEMANAGER_USER="hadoop"
export YARN_NODEMANAGER_USER="hadoop"
5.3 修正 JAVA_HOME 路径
切换到 hadoop 用户后,若报错 JAVA_HOME is not set,需查找精确路径:
find /usr/lib/jvm -name java-1.8.0-openjdk*
更新 hadoop-env.sh 中的 JAVA_HOME 为完整路径。
5.4 日志目录权限
若无法创建日志目录,需修改 Hadoop 目录所有权:
sudo chown -R hadoop:hadoop /usr/local/hadoop
5.5 验证集群状态
su hadoop
hdfs namenode -format
start-dfs.sh
start-yarn.sh
使用 jps 查看进程,应包含 NameNode, DataNode, ResourceManager 等。
- HDFS:
http://localhost:9870
- YARN:
http://localhost:8088
hdfs dfs -mkdir /test
echo "Hello Hadoop" > test.txt
hdfs dfs -put test.txt /test
hdfs dfs -ls /test
hdfs dfs -cat /test/test.txt
六、Hadoop 核心概念与后续步骤
6.1 Hadoop 核心构成
- 海量数据存储:通过 HDFS 将大文件切块并多副本存储,提供高容错性。
- 海量数据计算:通过 MapReduce 模型和 YARN 资源框架,实现'计算向数据移动'。
6.2 准备实际应用
wget https://files.grouplens.org/datasets/movielens/ml-latest-small.zip
unzip ml-latest-small.zip
cd ml-latest-small
上传数据至 HDFS 后即可编写 MapReduce 程序进行分析。
总结
通过以上步骤,已在 VMware 虚拟机中成功搭建 Hadoop 伪分布式环境。过程中解决了权限配置、网络 DNS、环境变量及日志目录等常见问题。该环境为后续学习 MapReduce 编程及探索大数据生态打下了坚实基础。
相关免费在线工具
- Keycode 信息
查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
- Escape 与 Native 编解码
JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
- JavaScript / HTML 格式化
使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
- JavaScript 压缩与混淆
Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
- 加密/解密文本
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
- Base64 字符串编码/解码
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online