华为云ecs重新安装环境后手工搭建Hadoop集群:完整实操指南
在华为云ECS上重新安装操作系统后,手工搭建多台Linux ECS的Hadoop环境,核心路径是:先规划节点角色,再统一配置SSH免密登录与JDK环境,最后依次安装并启动HDFS和YARN组件。整个过程可以完全通过命令行完成,不依赖任何自动化部署工具,适合学习Hadoop原理或需要精细控制集群配置的场景。

为什么选择手工搭建而不是使用镜像或脚本
很多人在华为云ecs重新安装环境后会纠结:直接用市场镜像一键部署,还是自己动手敲命令,两者有本质区别。
镜像部署节省时间,但屏蔽了大量底层细节,集群出问题时,你往往不知道是哪一层配置错了。手工搭建虽然要多花1-2小时,但你能清晰掌握每个配置文件的作用,这对后续运维和调优非常有价值。
行业共识认为,对于想要深入理解分布式系统原理的开发者,手工搭建至少一次Hadoop集群是必经之路。
华为云ecs重新安装环境后的初始化准备
无论你是重装系统还是新购ECS,都需要先做统一的初始化,这里假设你已经有至少3台Linux ECS,操作系统建议选择CentOS 7.9或Ubuntu 20.04,两者在Hadoop生态中都有广泛验证。
基础环境一致性检查
登录每台ECS后,先确认以下几点:
- 操作系统版本一致,避免因glibc版本差异导致奇怪的兼容性问题
- 时间同步正常,执行
date命令检查,时区建议统一为Asia/Shanghai - 主机名规划清晰,例如
hadoop-master、hadoop-node1、hadoop-node2 - 安全组规则放行必要端口:8020(NameNode RPC)、9870(NameNode UI)、8088(YARN UI)、8042(NodeManager UI)
主机名修改命令:
hostnamectl set-hostname hadoop-master
修改后编辑/etc/hosts,添加所有节点的IP映射,这是Hadoop集群互相通信的基础。
JDK安装与配置
Hadoop 3.x版本要求JDK 8或JDK 11,这里推荐OpenJDK 1.8,兼容性最稳定。
yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
安装后确认版本:
java -version
在/etc/profile末尾添加JAVA_HOME环境变量,并执行source /etc/profile使其生效。
多台linux ecs手工搭建hadoop集群:核心配置步骤
这是整个流程的核心部分,一共分为四个阶段,请按照顺序操作,不要跳步。
第一阶段:SSH免密登录配置
Hadoop的NameNode需要通过SSH无密码登录到所有DataNode节点来执行守护进程,这是新手最容易卡住的地方。
在主节点上生成密钥对:
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
将公钥分发到所有节点(包括主节点自己):
ssh-copy-id hadoop-master ssh-copy-id hadoop-node1 ssh-copy-id hadoop-node2
验证免密登录是否生效:
ssh hadoop-node1 "echo ok"

如果不需要输入密码直接输出ok,说明配置成功。
第二阶段:Hadoop安装包准备与目录规划
从Apache官网下载Hadoop 3.3.x稳定版本,上传到主节点的/opt目录下,解压并创建软链接:
tar -zxvf hadoop-3.3.6.tar.gz ln -s /opt/hadoop-3.3.6 /opt/hadoop
创建数据目录,用于存储NameNode元数据和DataNode数据块:
mkdir -p /data/hadoop/namenode mkdir -p /data/hadoop/datanode
然后修改/etc/profile,添加HADOOP_HOME环境变量,并将$HADOOP_HOME/bin和$HADOOP_HOME/sbin加入PATH。
第三阶段:五个核心配置文件详解
Hadoop的配置集中在$HADOOP_HOME/etc/hadoop/目录下,重点关注以下文件:
core-site.xml:定义文件系统访问入口
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop-master:8020</value>
</property>
</configuration>
hdfs-site.xml:设置副本数和NameNode/DataNode数据目录
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///data/hadoop/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///data/hadoop/datanode</value>
</property>
</configuration>
这里需要根据你的ECS数量调整dfs.replication,3台ECS时可以设置为3,如果只有2台,建议改为2,否则会有副本不足的告警。
mapred-site.xml:指定MapReduce运行框架
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
yarn-site.xml:配置ResourceManager和NodeManager
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop-master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
workers文件:列出所有DataNode主机名
hadoop-master
hadoop-node1
hadoop-node2
这个文件在Hadoop 3.x中叫workers,在2.x版本中叫slaves,如果你参考旧教程时遇到找不到文件的情况,多半是这个原因。
第四阶段:分发配置并启动集群
将主节点上配置好的整个Hadoop目录和/etc/profile同步到其他节点:
scp -r /opt/hadoop hadoop-node1:/opt/ scp /etc/profile hadoop-node1:/etc/
注意,每个节点的/data/hadoop/datanode目录需要单独创建,同时修改各节点的/etc/hosts文件,确保所有主机名都能正确解析。
首次启动前,需要在主节点格式化NameNode:
hdfs namenode -format
格式化完成后,在主节点上执行一键启动脚本:
start-dfs.sh start-yarn.sh
使用jps命令检查各节点进程,主节点应看到

NameNode、SecondaryNameNode、ResourceManager,从节点应看到DataNode、NodeManager。
华为云ecs搭建hadoop集群后如何验证与常见问题排查
集群启动只是第一步,验证可用性才是关键。
验证HDFS基本读写功能
创建一个测试目录并上传文件:
hdfs dfs -mkdir /test hdfs dfs -put /etc/hosts /test/ hdfs dfs -cat /test/hosts
如果能看到文件内容,说明HDFS读写链路正常,然后跑一个简单的MapReduce作业验证YARN:
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar pi 2 4
作业能正常输出结果,说明整个计算框架没问题。
常见错误与解决办法
错误1:DataNode启动后立刻退出
检查日志发现Initialization failed for Block pool,通常是NameNode格式化后clusterID与DataNode不一致,解决办法是删除所有节点的/data/hadoop目录,重新格式化NameNode。
错误2:50070或9870端口无法访问
首先确认安全组是否放行了对应端口,其次检查NameNode进程是否存活,如果是从本机访问,注意云服务器安全组和系统防火墙(firewalld)都要放行。
错误3:节点间通信超时
最常见的场景是华为云ECS默认开启了防火墙,各节点之间无法通过内网IP通信,执行以下命令关闭或配置防火墙:
systemctl stop firewalld systemctl disable firewalld
华为云ecs重新安装环境搭建hadoop集群需要多少内存
这取决于你的ECS规格和数据规模,根据实际测试经验,3台2核4G的ECS可以流畅运行一个学习用途的Hadoop集群,NameNode节点建议独立承担资源管理角色,如果要做稍微正式的开发测试,4核8G的规格会更舒适。
内存紧张时,可以适当调低YARN的容器内存分配,修改yarn-site.xml中的:
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>2048</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>2048</value>
</property>
这样让每个NodeManager最多使用2GB内存,避免物理内存不足导致节点宕机。
Q&A:华为云ecs重新安装环境搭建hadoop的常见疑问
问:华为云ecs重新安装环境后,之前的Hadoop数据还在吗?
重新安装操作系统会格式化系统盘,所有数据都会被清除,如果Hadoop的数据目录在数据盘上且未格式化,理论上数据还在,但强烈建议重装前备份元数据和数据块,重装后需要完全重建环境,无法直接复用旧的NameNode元数据。
问:多台linux ecs搭建hadoop集群一定要关闭防火墙吗?
不是必须关闭,更推荐做法是在防火墙中放行Hadoop相关的端口,关闭防火墙在测试环境是省事的做法,但在生产环境存在安全隐患,如果你只有2-3台机器做学习用途,关闭防火墙是业内常见的简化操作,据统计,多数的云上Hadoop集群故障与安全组规则配置不当有关,而非防火墙未放行。
问:Hadoop 2.x和3.x配置文件有哪些区别?
核心差异在于:2.x使用slaves文件定义从节点,3.x更名为workers;3.x的NameNode默认Web端口从50070变为9870;HDFS支持了多个NameNode的联邦机制,如果你查到的是旧教程,记得做对应替换。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/536231.html