Hadoop集群环境搭建完整指南:从虚拟机配置到集群部署

前言

本文详细记录了基于CentOS 7系统搭建三节点Hadoop集群的完整过程。从虚拟机创建、系统配置、网络设置到JDK环境、SSH免密登录及Hadoop核心配置,提供了每一步的操作命令和注意事项,适合大数据初学者和运维人员参考。

集群规划

本次搭建采用一个主节点(Master)和两个从节点(Slave)的经典架构,具体规划如下:

主机名称IP地址功能角色
hadoop01-master192.168.133.129NameNode, DataNode
hadoop02-slave1192.168.133.131DataNode
hadoop03-slave2192.168.133.130DataNode

所有节点均需配置:1. JDK环境 2. SSH免密登录 3. Hadoop集群八大配置文件

1. Linux虚拟机创建与配置

创建虚拟机时选择CentOS 7 64位系统,为三台节点分别命名为hadoop01hadoop02hadoop03

资源配置建议:

  • CPU与内存:遵循1/4原则,即分配物理机配置的1/4。
  • 网络模式:选择NAT。
  • 磁盘类型:选择SCSI。
  • 磁盘容量:建议设置为100G,并采用多文件分割以提高可移植性。
  • 镜像文件:创建时需关联指定的ISO镜像文件。

2. 基于CentOS 7.2构建Linux系统节点

2.1 修改主机名

登录虚拟机后,使用以下命令修改主机名:

hostnamectl set-hostname hadoop01

命令解析:hostnamectl= hostname control(主机名控制器)。

执行后输入bash刷新终端显示。

2.2 修改IP地址

编辑网络配置文件(不同系统网卡名称可能不同):

# 编辑网络配置文件 vi /etc/sysconfig/network-scripts/ifcfg-enp3s0 # 或 vi /etc/sysconfig/network-scripts/ifcfg-eno16777736

关键配置项:

  • ONBOOT改为yes(控制系统启动时自动激活并启用这个网络接口)。
  • 设置静态IP地址(如IPADDR=192.168.133.129)。

修改完成后,重启网络服务使配置生效:

systemctl restart network

查看网络配置:使用ip addr命令查看本机所有网卡、IP、MAC及网络状态。

3. SSH连接配置

完成三台节点的基本配置后,配置SSH连接以便远程管理和维护。

操作步骤:

  1. 在每台节点上使用ip addr找到其IP地址。
  2. 在Xshell等SSH客户端中新建连接:
    • 名称:与主机名相同。
    • 主机:填写对应的IP地址。
    • 用户身份验证:输入用户名和密码。
    • 终端类型:选择Linux。
    • 可调整字体大小以优化显示。

配置顺序:建议先完成第一台虚拟机(hadoop01)的全部配置,然后依次配置第二台(hadoop02)和第三台(hadoop03)。

4. Xshell配置优化

为提升操作效率,可对Xshell进行以下优化:

  • 复制粘贴:工具 → 选项 → 鼠标键盘 → 勾选“选择即复制”,右键设置为“粘贴”。
  • 同步操作:工具 → 发送键输入到所有会话,可实现多窗口同步输入命令。
  • 窗口布局:选项卡 → 排列 → 选择垂直或水平排列,方便同时查看多个会话。

5. 配置hosts文件

5.1 Linux节点配置

编辑所有节点的/etc/hosts文件:

vi /etc/hosts

添加以下内容:

192.168.133.129 hadoop01 hadoop01.org 192.168.133.131 hadoop02 hadoop02.org 192.168.133.130 hadoop03 hadoop03.org

配置完成后,可使用ping hadoop01等命令测试节点间通信。

5.2 Windows宿主机配置

为方便从宿主机访问集群,需修改Windows的hosts文件:

  1. 打开文件:C:\Windows\System32\drivers\etc\hosts
  2. 添加与Linux节点相同的内容。
  3. 保存后,打开cmd,使用ping hadoop01测试连通性。

ps:将hosts文件复制到桌面进行操作,在粘贴回去,即可完成更改。

6. 防火墙配置

为简化集群内部通信,建议关闭防火墙。

# 检查防火墙状态 firewall-cmd --state # 输出 running(运行中) 或 not running(未运行) 临时关闭防火墙(重启后失效) systemctl stop firewalld 永久关闭防火墙(开机不启动) systemctl disable firewalld

7. JDK 1.8环境配置

7.1 上传与解压

进入/opt目录(通常用于存放第三方软件包):

cd /opt/

使用FileZilla等工具将jdk-8u77-linux-x64.tar.gz传输到该目录。

解压方式一(直接解压并重命名):

tar -zxvf jdk-8u77-linux-x64.tar.gz mv jdk1.8.0_77/ jdk1.8

解压方式二(指定目录):

mkdir jdk1.8 tar -zxvf jdk-8u77-linux-x64.tar.gz -C jdk1.8/ cd jdk1.8/jdk1.8.0_77 mv ./* ..

8. 配置环境变量(重点)

# 进入JDK目录,查看当前绝对路径 cd /opt/jdk1.8/ pwd 编辑系统环境变量配置文件 vi /etc/profile

在文件末尾添加以下内容:

export JAVA_HOME=/opt/jdk1.8 export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

保存退出后,使配置立即生效:

source /etc/profile

验证JDK安装:

javac java -version which java

9. 通过Java代码验证JVM可用性

cd /opt/ vi Test.java

输入简单的Java代码(例如:public class Test { public static void main(String[] args) { System.out.println("Hello Hadoop!"); } })。

# 编译并运行 javac Test.java java Test

可将生成的Test.class文件通过FileZilla传到Windows,在PowerShell中运行java Test进行验证。

10. 配置国内阿里云镜像仓库

背景:默认的国外YUM源可能导致下载缓慢或失败,更换为国内镜像可大幅提升软件安装速度。

操作步骤:

  1. 进入YUM源配置目录:cd /etc/yum.repos.d/
  2. 查看原有源:cat CentOS-Base.repo
  3. (谨慎操作)清空旧源:rm -rf *
  4. 将准备好的国内镜像源配置文件(如Centos-7.repo)上传到该目录。
  5. 清理并重建缓存:
    yum clean all yum makecache

验证方法:

  • yum list:若能正常列出所有仓库包,说明源更换成功。
  • yum -y install vim:尝试安装vim编辑器,若成功则证明网络和源配置正常。
  • 安装后使用vim编辑文件,查看语法高亮效果。

11. 系统管理与服务配置

11.1 Linux系统关机与重启命令

在集群管理过程中,经常需要使用系统关机或重启命令。以下是常用的几种方式:

# 关机命令 init 0 # 系统关机(CentOS 6之前版本常用) shutdown -h now # 立即关机 poweroff # 立即关机(推荐) 重启命令 init 6 # 系统重启(CentOS 6之前版本常用) reboot # 立即重启(推荐) shutdown -r now # 立即重启

命令说明:

  • init 0init 6是传统的运行级别切换命令,在CentOS 7中仍可使用
  • shutdown命令更灵活,可以指定延迟时间(如shutdown -h +5表示5分钟后关机)
  • poweroffreboot是最直接、最常用的关机重启命令

11.2 NTP时间同步服务配置

在分布式集群环境中,所有节点的时间必须保持同步,否则可能导致数据不一致、日志时间错乱等问题。

11.2.1 主节点(Master)配置

选择一台服务器作为NTP时间服务器(通常选择主节点hadoop01):

# 1. 安装NTP服务端 yum -y install ntp 2. 手动设置初始时间(确保集群时间基本一致) date -s "2026-07-20 10:29:40" 3. 编辑NTP配置文件 vi /etc/ntp.conf 4. 注释掉默认的公共NTP服务器(第18-21行左右) server 0.centos.pool.ntp.org iburst server 1.centos.pool.ntp.org iburst server 2.centos.pool.ntp.org iburst server 3.centos.pool.ntp.org iburst 5. 添加本地时钟源(使用本地系统时钟作为时间源) server 127.127.1.0 fudge 127.127.1.0 stratum 10 6. 启动NTP服务并设置开机自启 systemctl start ntpd systemctl enable ntpd
11.2.2 从节点(Slave)配置

在其他节点上配置NTP客户端,与主节点时间同步:

# 1. 安装NTP客户端工具 yum -y install ntpdate 2. 与主节点进行时间同步 ntpdate hadoop01 或使用域名 ntpdate hadoop01.org 3. 设置定时同步(可选,建议配置) 编辑crontab,添加每小时同步一次 echo "0 * * * * /usr/sbin/ntpdate hadoop01 > /dev/null 2>&1" >> /etc/crontab 4. 验证时间同步 date 查看与主节点的时间差 ntpdate -q hadoop01

11.3 Web服务器(Apache HTTPD)搭建与配置

在某些场景下,需要在集群节点上部署Web服务,用于提供Web UI访问或API服务。

11.3.1 检查与卸载旧版本
# 查找httpd安装位置 find / -name httpd which httpd 如果已存在旧版本,可先隔离或卸载 mv /usr/sbin/httpd /opt/httpd_backup # 隔离旧版本 yum -y remove httpd # 卸载旧版本
11.3.2 安装与启动Apache HTTPD
# 1. 安装Apache HTTPD yum -y install httpd 2. 启动HTTPD服务 systemctl start httpd 3. 查看服务状态 systemctl status httpd 4. 设置开机自启 systemctl enable httpd 5. 检查端口监听(默认80端口) netstat -tlnp | grep :80 或使用 ss -tlnp | grep :80
11.3.3 基本配置
# 1. 进入配置目录 cd /etc/httpd/ cd conf 2. 编辑主配置文件 vi httpd.conf 常用配置项说明: Listen 80 # 监听端口 ServerName localhost:80 # 服务器名称 DocumentRoot "/var/www/html" # 网站根目录 DirectoryIndex index.html # 默认首页文件 3. 创建测试页面 cd /var/www/html/ echo "<h1>Apache HTTPD Test Page</h1>" > index.html echo "<p>Hadoop Cluster Web Server</p>" >> index.html 4. 重启服务使配置生效 systemctl restart httpd
11.3.4 防火墙配置(如果防火墙未关闭)
# 开放80端口 firewall-cmd --permanent --add-port=80/tcp firewall-cmd --reload 或临时关闭防火墙进行测试 systemctl stop firewalld
11.3.5 特殊问题:HTTPD服务启动失败(masked状态)

在安装Apache HTTPD时,有时会遇到systemctl start httpdsystemctl enable httpd等命令执行失败,并显示Failed to start httpd.service: Unit httpd.service is masked的错误。这通常是由于系统中存在残留的httpd服务配置或服务被屏蔽导致的。

问题现象:

# 尝试启动httpd服务失败 systemctl start httpd # 错误信息:Failed to start httpd.service: Unit httpd.service is masked. 查看服务状态 systemctl status httpd 显示:Loaded: masked (Reason: Unit httpd.service is masked.)

解决方案:

  1. 彻底卸载httpd并清理残留配置
    # 1. 卸载Apache HTTPD及相关工具 yum erase -y httpd httpd-tools 2. 删除残留的服务屏蔽文件 rm -rf /etc/systemd/system/httpd.service rm -rf /etc/systemd/system/multi-user.target.wants/httpd.service 3. 重新加载systemd配置 systemctl daemon-reload
  2. 重新安装httpd
    # 重新安装Apache HTTPD yum install -y httpd
  3. 清理屏蔽并解锁服务
    # 再次清理可能存在的屏蔽文件 rm -f /etc/systemd/system/httpd.service 重新加载systemd配置 systemctl daemon-reload 解锁httpd服务(解除masked状态) systemctl unmask httpd
  4. 验证服务状态
    # 检查服务状态 systemctl status httpd # 正常应显示: # ● httpd.service - The Apache HTTP Server # Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled) # Active: inactive (dead)
  5. 启动并启用服务
    # 启动httpd服务 systemctl start httpd 设置开机自启 systemctl enable httpd 再次检查服务状态 systemctl status httpd 正常应显示Active: active (running)

问题原因分析:

  • masked状态:表示服务被systemd屏蔽,无法启动或启用。这通常发生在之前安装的httpd未完全卸载,或者系统中有其他软件包修改了服务配置。
  • 残留文件/etc/systemd/system/httpd.service等文件可能是之前安装留下的,会覆盖系统默认的服务配置。
  • 解决方案核心:彻底清理所有残留配置,重新安装,然后使用systemctl unmask httpd解除屏蔽状态。

预防措施:

  • 在安装新版本httpd前,先检查是否有旧版本:rpm -qa | grep httpd
  • 如果存在旧版本,先完整卸载:yum remove -y httpd httpd-tools
  • 安装前检查服务状态:systemctl status httpd,确保没有masked状态

11.4 MariaDB数据库安装与配置

MariaDB是MySQL的分支,在CentOS 7.x之后作为默认的数据库管理系统,常用于Hadoop生态中的Hive元数据存储。

11.4.1 安装MariaDB及相关组件
# 安装MariaDB服务器、客户端和Java连接器 yum -y install mariadb mariadb-server mysql-connector-java 启动MariaDB服务 systemctl start mariadb 设置开机自启 systemctl enable mariadb 检查服务状态 systemctl status mariadb 或检查端口监听 netstat -ano | grep 3306 或使用 ss -tlnp | grep :3306
11.4.2 安全初始化配置
# 运行安全配置脚本 mysql_secure_installation 按以下步骤配置(建议设置): 1. 输入当前root密码(首次安装为空,直接回车) 2. 设置root密码?输入 y 3. 输入新密码并确认 4. 移除匿名用户?输入 y 5. 禁止root远程登录?输入 n(集群环境可能需要远程访问) 6. 移除test数据库?输入 y 7. 重新加载权限表?输入 y
11.4.3 数据库基本操作
# 登录MariaDB(使用刚设置的密码) mysql -uroot -p123456 # 或 mysql -uroot -p 创建Hive元数据库 CREATE DATABASE hive; SHOW DATABASES; 使用hive数据库 USE hive; 查看当前数据库 SELECT DATABASE(); 为Hive配置权限(本地访问) GRANT ALL PRIVILEGES ON hive.* TO 'root'@'localhost' IDENTIFIED BY '123456'; 为Hive配置权限(远程访问,集群环境需要) GRANT ALL PRIVILEGES ON hive.* TO 'root'@'%' IDENTIFIED BY '123456'; 刷新权限 FLUSH PRIVILEGES; 退出MariaDB EXIT;
11.4.4 验证安装与连接
# 验证MariaDB版本 mysql --version 测试连接 mysql -uroot -p123456 -e "SELECT VERSION();" 查看数据库列表 mysql -uroot -p123456 -e "SHOW DATABASES;" 测试hive数据库权限 mysql -uroot -p123456 -e "USE hive; SHOW TABLES;"

11.5 其他常用工具安装

以下工具在集群管理和日常运维中非常有用:

  • vim:功能强大的文本编辑器,支持语法高亮
    <pre>

    <pre>

    yum -y install vim

  • lrzsz:通过Zmodem协议实现文件上传下载(配合Xshell使用)
    yum -y install lrzsz # 上传文件:rz # 下载文件:sz 文件名
  • tree:以树状结构显示目录内容
    yum -y install tree # 使用示例: tree /opt/ # 显示/opt目录结构 tree -L 2 /etc/ # 显示/etc目录,深度为2级
  • net-tools:网络工具包(包含ifconfig、netstat等命令)
    yum -y install net-tools # 常用命令: ifconfig # 查看网络接口信息 netstat -tlnp # 查看端口监听情况 route -n # 查看路由表

12. 配置SSH免密登录

Hadoop集群节点间需要SSH免密登录以实现无密码访问,配置步骤如下:

  1. 生成密钥对:在每个节点上执行以下命令生成公钥和私钥
    <pre>

    <pre>

    <pre>

    <pre>

    ssh-keygen

  2. 分发公钥:以hadoop01节点为例,将公钥复制到其他节点
    # 从hadoop01复制公钥到hadoop03 ssh-copy-id hadoop03 # 输入hadoop03的密码确认 从hadoop01复制公钥到hadoop02 ssh-copy-id hadoop02 输入hadoop02的密码确认
  3. 自免密配置:hadoop01既是客户端又是服务器,也需要给自己配置免密登录
    ssh-copy-id hadoop01
  4. 验证配置:在hadoop01上测试到hadoop02的免密登录
    ssh hadoop02 # 成功登录后会显示 [root@hadoop02 ~]# 提示符 hostname # 验证主机名 ip addr # 验证IP地址 exit # 返回hadoop01
  5. 其他节点配置:在hadoop02和hadoop03节点上重复上述步骤,实现所有节点间的双向免密登录。

13. SELinux配置与应用

SELinux(Security-Enhanced Linux)是Linux的安全子系统,但在Hadoop集群环境中,为避免权限问题,通常需要调整其配置。

13.1 查看SELinux状态

getenforce

可能返回三种状态:

  • Enforcing:强制模式,SELinux策略强制执行
  • Permissive:宽容模式,仅记录违规不阻止
  • Disabled:禁用模式

13.2 临时修改SELinux模式

# 设置为宽容模式 setenforce 0 设置为强制模式 setenforce 1

13.3 永久禁用SELinux

对于Hadoop集群环境,建议永久禁用SELinux以避免权限冲突:

  1. 进入SELinux配置目录
    cd /etc/selinux/ ll
  2. 编辑配置文件
    vim config
  3. 找到SELINUX=行,将其值改为disabled
    SELINUX=disabled
  4. 保存退出后重启系统使配置生效
    init 0

注意:修改SELinux配置后需要重启系统才能生效。在生产环境中,请根据实际安全需求谨慎选择SELinux模式。

后续步骤

至此,我们已经完成了Hadoop集群环境搭建的所有基础配置工作,包括:

  1. 虚拟机创建与系统配置
  2. 网络与主机名设置
  3. SSH连接与Xshell优化
  4. hosts文件配置(Linux和Windows)
  5. 防火墙关闭
  6. JDK 1.8环境安装与配置
  7. Java环境验证
  8. 阿里云镜像仓库配置
  9. 常用插件安装(vim、lrzsz、tree、net-tools、MariaDB)
  10. SSH免密登录配置
  11. SELinux配置与禁用

接下来,您可以继续进行以下步骤来搭建完整的Hadoop集群:

  1. Hadoop软件包下载与分发:下载Hadoop安装包,并将其分发到所有集群节点。
  2. Hadoop核心配置文件修改:配置八大核心文件,包括:
    • hadoop-env.sh
    • core-site.xml
    • hdfs-site.xml
    • mapred-site.xml
    • yarn-site.xml
    • slaves
    • masters
    • hadoop-metrics2.properties
  3. Hadoop环境变量配置:在所有节点上配置Hadoop环境变量。
  4. Hadoop集群格式化与启动:格式化NameNode,启动HDFS和YARN服务。
  5. 集群验证与测试:通过Web UI和命令行验证集群运行状态。

这些内容将在后续文章中详细展开,敬请关注。