VirtualBox 搭建 Hadoop-2.7.3 集群完整安装总结

基于本次实操过程,以下是在 VirtualBox 多节点集群(master + slave1 + slave2)上安装 Hadoop 的核心步骤 + 关键避坑点 ,全程以 hadoop 用户为核心操作主体:

一、前置环境准备(所有节点统一操作)

1. 基础系统配置

  • 配置各节点静态 IP、主机名(master/slave1/slave2),并修改 /etc/hosts 映射 IP 与主机名;

  • 关闭防火墙/SELinux(实验环境简化):systemctl stop firewalld && systemctl disable firewalldsetenforce 0

  • 配置 master 到 slave1/slave2 的 SSH 免密登录(避免后续同步/启动需要重复输密码)。

2. Java 环境部署(核心依赖)

  • 下载 OpenJDK 12(或 JDK 8,适配 Hadoop 2.7.3 更稳定)安装包,解压到统一路径(如 /usr/local/java/jdk-12.0.2);

  • 所有节点配置 JAVA_HOME 环境变量(/etc/profile.bashrc),确保 java -version 能正常输出版本;

  • ✅ 避坑:所有节点 Java 路径必须完全一致,否则后续 Hadoop 配置会报「Java 路径不存在」错误。

3. 创建 hadoop 用户(所有节点)

复制代码

useradd -d /home/hadoop -m hadoop # 创建用户并指定家目录 passwd hadoop # 设置密码(如 Hanmei12#$)

✅ 避坑:必须在 master/slave1/slave2 都创建,且用户名/家目录/密码一致。

二、Hadoop 安装包部署(先 master,后同步 slave)

1. master 节点部署安装包

  • 下载 Hadoop-2.7.3 安装包(官网归档/华为云镜像,若 wget 证书报错加 --no-check-certificate,镜像 403/404 则本地下载后 SFTP 上传);

  • 将安装包复制到 /home/hadoop 目录,赋予 hadoop:hadoop 权限,解压到 /home/hadoop/hadoop-2.7.3

    复制代码

    tar -zxvf hadoop-2.7.3.tar.gz -C /home/hadoop/hadoop-2.7.3 --strip-components=1

2. 同步安装包到 slave1/slave2

复制代码

# master 节点 root 执行 ssh root@slave1 "mkdir -p /home/hadoop/hadoop-2.7.3" # 先创建目录 scp /usr/local/hadoop-2.7.3.tar.gz root@slave1:/home/hadoop/ # 同步安装包 ssh root@slave1 "cd /home/hadoop && tar -zxvf hadoop-2.7.3.tar.gz -C /home/hadoop/hadoop-2.7.3 --strip-components=1" # 远程解压 ssh root@slave1 "chown -R hadoop:hadoop /home/hadoop/hadoop-2.7.3" # 赋权 # slave2 执行相同操作

✅ 避坑:同步前先创建目录,解压后必须赋权,否则 hadoop 用户无权限访问。

三、Hadoop 核心配置(先 master,后同步 slave)

1. 配置 Java 路径(关键)

  • 编辑 master 节点 /home/hadoop/hadoop-2.7.3/etc/hadoop/hadoop-env.shyarn-env.sh,指定实际 Java 路径:

    复制代码

    export JAVA_HOME=/usr/local/java/jdk-12.0.2 # 与节点实际 Java 路径一致

  • 同步配置文件到 slave1/slave2,并修正 slave 节点的 Java 路径(若 slave 路径与 master 不同):

    复制代码

    scp hadoop-env.sh yarn-env.sh root@slave1:/home/hadoop/hadoop-2.7.3/etc/hadoop/ ssh root@slave1 "su hadoop -c 'sed -i \"s#旧路径#新路径#g\" /home/hadoop/hadoop-2.7.3/etc/hadoop/hadoop-env.sh'"

✅ 验证:所有节点执行 hadoop version 能正常输出版本,无「Java 路径不存在」报错。

2. 集群核心配置文件(master 节点修改)

|-----------------|----------------------------------------------------------------------|
| 配置文件 | 核心配置项 |
| core-site.xml | 指定 NameNode 地址(hdfs://master:9000)、Hadoop 临时目录 |
| hdfs-site.xml | 设置副本数(2)、NameNode/DataNode 数据目录、关闭权限检查 |
| mapred-site.xml | 指定 MapReduce 运行在 YARN 上(mapreduce.framework.name=yarn) |
| yarn-site.xml | 指定 ResourceManager 地址(master:8032)、NodeManager 服务(mapreduce_shuffle) |
| slaves | 添加 slave1、slave2(指定 DataNode 节点) |

3. 同步配置文件到 slave

复制代码

scp core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml slaves root@slave1:/home/hadoop/hadoop-2.7.3/etc/hadoop/ # slave2 执行相同操作,同步后赋权:chown -R hadoop:hadoop /home/hadoop/hadoop-2.7.3/etc/hadoop/

4. 创建数据目录(所有节点)

复制代码

# master 节点 mkdir -p /home/hadoop/hadoop-2.7.3/tmp /home/hadoop/hadoop-2.7.3/namenode /home/hadoop/hadoop-2.7.3/datanode # slave1/slave2 节点(仅需 tmp 和 datanode) ssh root@slave1 "su hadoop -c 'mkdir -p /home/hadoop/hadoop-2.7.3/tmp /home/hadoop/hadoop-2.7.3/datanode'"

四、集群初始化与启动

1. 格式化 NameNode(仅 master 执行一次)

复制代码

su hadoop cd /home/hadoop/hadoop-2.7.3 bin/hdfs namenode -format

✅ 成功标志:输出最后一行显示 successfully formatted

2. 启动集群(master 节点)

复制代码

sbin/start-dfs.sh # 启动 HDFS(NameNode/DataNode/SecondaryNameNode) sbin/start-yarn.sh # 启动 YARN(ResourceManager/NodeManager)

3. 验证集群状态

  • master 节点 jps:显示 NameNode、ResourceManager、SecondaryNameNode、Jps;

  • slave1/slave2 节点 jps:显示 DataNode、NodeManager、Jps;

  • 浏览器访问 http://master:50070(HDFS WebUI)、http://master:8088(YARN WebUI),能正常打开即集群运行正常。

五、核心避坑点总结

  1. 路径一致性:所有节点的 Java 路径、Hadoop 安装路径必须完全一致,否则配置同步后会报「文件/目录不存在」;

  2. 权限问题 :所有 Hadoop 相关文件/目录必须归属 hadoop:hadoop,否则启动/执行命令会报权限不足;

  3. 用户一致性 :master/slave 必须都创建 hadoop 用户,且操作 Hadoop 时必须切换到该用户(避免 root 启动导致权限混乱);

  4. 配置同步顺序:先给 slave 部署安装包 + 创建目录,再同步配置文件,否则 scp 会提示路径不存在;

  5. 格式化仅一次:NameNode 格式化只能执行一次,重复格式化会导致 DataNode 无法连接。

关键点回顾

  1. 前置核心:所有节点统一 Java 环境、创建 hadoop 用户、配置 SSH 免密,是集群部署的基础;

  2. 配置核心:先在 master 完成所有配置文件修改,再同步到 slave,确保集群配置一致;

  3. 启动核心:仅 master 格式化 NameNode,启动集群后通过 jps 验证各节点组件是否正常启动。

按照以上步骤操作,即可在 VirtualBox 集群中完成 Hadoop-2.7.3 的完整安装与启动,满足基础的分布式计算/存储实验需求。

相关推荐
番茄去哪了1 小时前
高并发选课系统页面阻塞现象的技术原理分析:同步交互与悲观锁机制
java·缓存·科普·面向对象编程
程序员Terry1 小时前
别老写重复代码了!模版方法模式一次讲透
java·设计模式
是2的10次方啊1 小时前
String.format 替换踩坑记:从遇坑、读源码到手写实现
java·源码阅读
不光头强2 小时前
手写tomcat
java·tomcat
寻见9032 小时前
救命!Spring Boot 凭什么火?从道法术器讲透,新手也能一键上手
java·spring boot·java ee
jinanmichael2 小时前
【SQL】掌握SQL查询技巧:数据分组与排序
java·jvm·sql
彭于晏Yan2 小时前
SpringBoot如何调用节假日API
java·spring boot·后端
jianfeng_zhu2 小时前
用java解决空心金字塔的问题
java·开发语言·python
寻见9032 小时前
告别只会 CRUD!Spring 核心原理吃透,这一篇就够了(Java 程序员必藏)
java·后端·spring