Hadoop集群环境搭建完整指南:从虚拟机配置到集群部署 📅 2026/7/24 19:48:51 前言本文详细记录了基于CentOS 7系统搭建三节点Hadoop集群的完整过程。从虚拟机创建、系统配置、网络设置到JDK环境、SSH免密登录及Hadoop核心配置提供了每一步的操作命令和注意事项适合大数据初学者和运维人员参考。集群规划本次搭建采用一个主节点Master和两个从节点Slave的经典架构具体规划如下主机名称IP地址功能角色hadoop01-master192.168.133.129NameNode, DataNodehadoop02-slave1192.168.133.131DataNodehadoop03-slave2192.168.133.130DataNode所有节点均需配置1. JDK环境 2. SSH免密登录 3. Hadoop集群八大配置文件1. Linux虚拟机创建与配置创建虚拟机时选择CentOS 7 64位系统为三台节点分别命名为hadoop01、hadoop02、hadoop03。资源配置建议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地址如IPADDR192.168.133.129。修改完成后重启网络服务使配置生效systemctl restart network查看网络配置使用ip addr命令查看本机所有网卡、IP、MAC及网络状态。3. SSH连接配置完成三台节点的基本配置后配置SSH连接以便远程管理和维护。操作步骤在每台节点上使用ip addr找到其IP地址。在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文件打开文件C:\Windows\System32\drivers\etc\hosts添加与Linux节点相同的内容。保存后打开cmd使用ping hadoop01测试连通性。ps:将hosts文件复制到桌面进行操作在粘贴回去即可完成更改。6. 防火墙配置为简化集群内部通信建议关闭防火墙。# 检查防火墙状态 firewall-cmd --state # 输出 running运行中 或 not running未运行 临时关闭防火墙重启后失效 systemctl stop firewalld 永久关闭防火墙开机不启动 systemctl disable firewalld7. 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 java9. 通过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源可能导致下载缓慢或失败更换为国内镜像可大幅提升软件安装速度。操作步骤进入YUM源配置目录cd /etc/yum.repos.d/查看原有源cat CentOS-Base.repo谨慎操作清空旧源rm -rf *将准备好的国内镜像源配置文件如Centos-7.repo上传到该目录。清理并重建缓存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 0和init 6是传统的运行级别切换命令在CentOS 7中仍可使用shutdown命令更灵活可以指定延迟时间如shutdown -h 5表示5分钟后关机poweroff和reboot是最直接、最常用的关机重启命令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 ntpd11.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 21 /etc/crontab 4. 验证时间同步 date 查看与主节点的时间差 ntpdate -q hadoop0111.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 :8011.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 h1Apache HTTPD Test Page/h1 index.html echo pHadoop Cluster Web Server/p index.html 4. 重启服务使配置生效 systemctl restart httpd11.3.4 防火墙配置如果防火墙未关闭# 开放80端口 firewall-cmd --permanent --add-port80/tcp firewall-cmd --reload 或临时关闭防火墙进行测试 systemctl stop firewalld11.3.5 特殊问题HTTPD服务启动失败masked状态在安装Apache HTTPD时有时会遇到systemctl start httpd、systemctl 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.)解决方案彻底卸载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重新安装httpd# 重新安装Apache HTTPD yum install -y httpd清理屏蔽并解锁服务# 再次清理可能存在的屏蔽文件 rm -f /etc/systemd/system/httpd.service 重新加载systemd配置 systemctl daemon-reload 解锁httpd服务解除masked状态 systemctl unmask httpd验证服务状态# 检查服务状态 systemctl status httpd # 正常应显示 # ● httpd.service - The Apache HTTP Server # Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled) # Active: inactive (dead)启动并启用服务# 启动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 :330611.4.2 安全初始化配置# 运行安全配置脚本 mysql_secure_installation 按以下步骤配置建议设置 1. 输入当前root密码首次安装为空直接回车 2. 设置root密码输入 y 3. 输入新密码并确认 4. 移除匿名用户输入 y 5. 禁止root远程登录输入 n集群环境可能需要远程访问 6. 移除test数据库输入 y 7. 重新加载权限表输入 y11.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 rootlocalhost 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功能强大的文本编辑器支持语法高亮prepreyum -y install vimlrzsz通过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免密登录以实现无密码访问配置步骤如下生成密钥对在每个节点上执行以下命令生成公钥和私钥prepreprepressh-keygen分发公钥以hadoop01节点为例将公钥复制到其他节点# 从hadoop01复制公钥到hadoop03 ssh-copy-id hadoop03 # 输入hadoop03的密码确认 从hadoop01复制公钥到hadoop02 ssh-copy-id hadoop02 输入hadoop02的密码确认自免密配置hadoop01既是客户端又是服务器也需要给自己配置免密登录ssh-copy-id hadoop01验证配置在hadoop01上测试到hadoop02的免密登录ssh hadoop02 # 成功登录后会显示 [roothadoop02 ~]# 提示符 hostname # 验证主机名 ip addr # 验证IP地址 exit # 返回hadoop01其他节点配置在hadoop02和hadoop03节点上重复上述步骤实现所有节点间的双向免密登录。13. SELinux配置与应用SELinuxSecurity-Enhanced Linux是Linux的安全子系统但在Hadoop集群环境中为避免权限问题通常需要调整其配置。13.1 查看SELinux状态getenforce可能返回三种状态Enforcing强制模式SELinux策略强制执行Permissive宽容模式仅记录违规不阻止Disabled禁用模式13.2 临时修改SELinux模式# 设置为宽容模式 setenforce 0 设置为强制模式 setenforce 113.3 永久禁用SELinux对于Hadoop集群环境建议永久禁用SELinux以避免权限冲突进入SELinux配置目录cd /etc/selinux/ ll编辑配置文件vim config找到SELINUX行将其值改为disabledSELINUXdisabled保存退出后重启系统使配置生效init 0注意修改SELinux配置后需要重启系统才能生效。在生产环境中请根据实际安全需求谨慎选择SELinux模式。后续步骤至此我们已经完成了Hadoop集群环境搭建的所有基础配置工作包括虚拟机创建与系统配置网络与主机名设置SSH连接与Xshell优化hosts文件配置Linux和Windows防火墙关闭JDK 1.8环境安装与配置Java环境验证阿里云镜像仓库配置常用插件安装vim、lrzsz、tree、net-tools、MariaDBSSH免密登录配置SELinux配置与禁用接下来您可以继续进行以下步骤来搭建完整的Hadoop集群Hadoop软件包下载与分发下载Hadoop安装包并将其分发到所有集群节点。Hadoop核心配置文件修改配置八大核心文件包括hadoop-env.shcore-site.xmlhdfs-site.xmlmapred-site.xmlyarn-site.xmlslavesmastershadoop-metrics2.propertiesHadoop环境变量配置在所有节点上配置Hadoop环境变量。Hadoop集群格式化与启动格式化NameNode启动HDFS和YARN服务。集群验证与测试通过Web UI和命令行验证集群运行状态。这些内容将在后续文章中详细展开敬请关注。