多台虚拟机搭建Hadoop,先别急着装Hadoop,核心是先把主机名解析、静态IP、SSH免密、时间同步、防火墙/SELinux、JDK版本、内存与磁盘规划这些基础配置做对。 这些基础一旦错,后面NameNode格式化、DataNode上线、YARN调度就会反复报错。
统一基础环境:主机名、IP、SSH和时间
主机名和hosts文件要一一对应
准备三台虚拟机,建议命名成hadoop101、hadoop102、hadoop103,每台都要做三件事:
- 执行
hostnamectl set-hostname hadoop101,把主机名固定下来。 - 编辑
/etc/hosts,把三台虚拟机的IP和主机名都写进去。 - 验证:
ping hadoop102、hostname、ping -c 2 hadoop103。
很多DataNode注册失败,不是Hadoop坏了,而是hosts文件少写一行,或者主机名和实际IP对不上。
静态IP别用DHCP
虚拟机克隆后,DHCP很容易重新分配IP,Hadoop配置文件里写的是主机名,主机名背后对应IP,IP一变,集群就散。
- VMware NAT模式:适合个人电脑,虚拟机之间可互访,外部访问Web UI需要端口转发。
- 桥接模式:虚拟机和局域网其他机器在同一网段,适合多机互访和模拟机房环境。
- 修改
/etc/sysconfig/network-scripts/ifcfg-ens33或Ubuntu的netplan,设置BOOTPROTO=static、IPADDR、GATEWAY、DNS1。 - 验证:
ip addr、ping baidu.com、ping hadoop102。
SSH免密要所有节点互信
Hadoop启动脚本依赖SSH,只做NameNode到其他节点免密不够,实验集群最好所有节点互相免密。
- 每台执行:
ssh-keygen -t rsa。 - 分发公钥:
ssh-copy-id hadoop@hadoop102。 - 验证:
ssh hadoop102,能直接登录才算通过。 - 所有节点使用同一个普通用户,比如hadoop,避免权限和路径混乱。
时间同步和防火墙
时间差太大,日志时间会乱,YARN任务也可能异常。
- 安装chronyd或ntpd,指定同一台节点作为时间源。
- 实验环境可临时关闭firewalld:
systemctl stop firewalld、systemctl disable firewalld。 - 生产环境按端口开放:8020、9870、8088、19888、9000等。
- SELinux设为permissive或disabled,改完重启。

多台虚拟机搭建Hadoop集群网络配置怎么规划
IP与角色分配示例
| 主机名 | IP示例 | 主要进程 |
|---|---|---|
| hadoop101 | 168.56.101 | NameNode、ResourceManager、SecondaryNameNode |
| hadoop102 | 168.56.102 | DataNode、NodeManager |
| hadoop103 | 168.56.103 | DataNode、NodeManager |
三台必须同网段,不要一台NAT、一台桥接,否则跨节点通信时好时坏。
端口和防火墙策略
Hadoop 3.x常用端口:
- HDFS RPC:8020
- NameNode Web UI:9870
- YARN ResourceManager Web UI:8088
- MapReduce JobHistory:19888
- DataNode数据传输:9866等
检查命令:ss -tunlp | grep java,如果端口没监听,先看进程,再看防火墙,最后看配置文件。
网络模式与Web UI访问
NAT模式下,宿主机访问虚拟机Web UI通常没问题,局域网其他电脑要访问,需要VMware端口转发。
桥接模式下,虚拟机像局域网独立主机,Web UI访问更直接,但无线网卡桥接有时不稳定,能插网线就插网线。
本地虚拟机搭建Hadoop集群和云服务器有什么区别
资源与成本
本地虚拟机吃宿主机内存和磁盘,预算有限时,本地更划算,云服务器按量付费,长期跑集群成本不低,还要考虑带宽和云盘IO。
业内专家指出,小集群最常见故障来自主机名解析和克隆后MAC冲突,而不是Hadoop本身。
网络与访问
云服务器通常有内网IP和安全组,本地虚拟机常用NAT或桥接,云上要放行安全组端口,本地要处理防火墙和端口转发。
克隆与快照
本地虚拟机建议用完整克隆,少用链接克隆,克隆后必须改:
- 主机名
- 静态IP
- MAC地址相关配置
/etc/hosts- Hadoop数据目录
云服务器可以用自定义镜像批量部署,但每台实例的hostname和IP仍要重新规划。
三台虚拟机搭建Hadoop集群需要多大内存
内存分配经验
行业共识认为,三节点实验集群至少给每台2GB内存,但只够跑最基础HDFS和YARN,想跑Hive、Spark或MapReduce任务,每台建议4GB到8GB。
宿主机内存建议:
-

16GB:三台各4GB,剩余给系统,能跑基础实验。
- 32GB:三台各8GB,适合教学、开发和轻量测试。
- 8GB:三台各2GB会很卡,不建议长期使用。
YARN要限制资源,别让NodeManager把内存吃光:
yarn.nodemanager.resource.memory-mbyarn.scheduler.maximum-allocation-mbyarn.nodemanager.resource.cpu-vcores
磁盘与数据目录
每台虚拟机最好加一块独立数据盘,挂载到 /data,Hadoop数据目录不要放系统盘。
dfs.namenode.name.dir=/data/hadoop/namedfs.datanode.data.dir=/data/hadoop/datahadoop.tmp.dir=/data/hadoop/tmp
三副本默认复制因子是3,三台DataNode刚好,实验环境也可设2,节省空间。
CPU和虚拟化
BIOS里开启VT-x或AMD-V,每台至少2核,推荐4核,磁盘用SCSI,SSD体验更好,动态磁盘别设太小,Hadoop日志和数据增长很快。
Hadoop配置文件与启动顺序
核心配置文件
在hadoop101上配置,再分发到其他节点:
core-site.xml:fs.defaultFS=hdfs://hadoop101:8020hdfs-site.xml:dfs.replication=3、NameNode和DataNode目录yarn-site.xml:yarn.resourcemanager.hostname=hadoop101mapred-site.xml:mapreduce.framework.name=yarnworkers:写hadoop102、hadoop103
分发命令示例:scp -r /opt/module/hadoop-3.x hadoop102:/opt/module/。
格式化与启动
首次启动前,只在NameNode执行一次:
hdfs namenode -formatstart-dfs.shstart-yarn.shjps
正常应看到NameNode、DataNode、ResourceManager、NodeManager等进程,Web UI访问:
http://hadoop101:9870http://hadoop101:8088
常见坑
- 重复格式化导致clusterID不一致。
- 克隆后MAC地址冲突。
- DataNode目录权限不对。
- 防火墙没关或端口没放行。
- 时间不同步。
- JDK版本不统一。
在Windows电脑用VMware搭建Hadoop集群要注意什么
克隆后必须改的配置
从第一台克隆出第二、第三台后,逐台修改:

/etc/hostname/etc/hosts- ifcfg-ens33里的IP、UUID、HWADDR
- 删除
/etc/udev/rules.d/70-persistent-net.rules中旧网卡记录 - 清空Hadoop数据目录
不改这些,轻则IP冲突,重则DataNode起不来。
Hyper-V与共享文件夹
Windows开启Hyper-V后,VMware可能无法正常使用,用VMware跑Hadoop时,关闭Hyper-V相关功能,不要把Hadoop数据放在共享文件夹,权限和性能都不适合。
预算有限搭建Hadoop教学实验集群怎么选配置
最低可用与推荐配置
| 场景 | 每台配置 | 宿主机建议 | 说明 |
|---|---|---|---|
| 只验证HDFS | 2核2GB | 16GB | 能跑,但卡 |
| 教学实验 | 2核4GB | 16GB到32GB | 适合基础MapReduce |
| Hive/Spark测试 | 4核8GB | 32GB以上 | 更稳,任务不易崩 |
替代方案
预算特别紧,可以先跑伪分布式或Docker Compose,再扩展到三台虚拟机,需要模拟真实网络和故障时,多台虚拟机仍更合适。
多台虚拟机搭建Hadoop的难点不在安装包,而在基础配置的一致性,把主机名、静态IP、SSH、时间、端口、内存和数据目录做扎实,集群稳定性会明显提升。
多台虚拟机搭建Hadoop需要注意哪些配置问题?Q&A
三台虚拟机搭建Hadoop,网络模式选NAT还是桥接?
个人学习优先NAT,配置简单,虚拟机之间可互访,需要局域网其他机器访问Web UI,或模拟真实机房网络,选桥接,关键是三台必须统一网络模式,不能混用。
克隆虚拟机后DataNode不启动怎么办?
先查 /etc/hosts、hostname、IP和MAC地址,再看DataNode日志,常见原因是clusterID不一致或数据目录残留,处理方式是停掉集群,清理所有节点的 dfs/data 和 dfs/name,再重新格式化一次,不要只格式化NameNode。
Hadoop 3.x和2.x在虚拟机集群配置上有什么区别?
Hadoop 3.x的NameNode Web UI默认端口是9870,2.x常见是50070,3.x支持纠删码,YARN资源调度更灵活,但核心配置文件结构和三节点部署思路基本一致,据Apache Hadoop官方文档,端口变化是升级时最容易忽略的细节。