阿里云 EMR 大数据集群创建后完整操作指南
本指南覆盖 EMR 集群创建完成后的状态验证、环境登录、组件测试、UI 配置、问题排查、基础运维、资源释放全流程,每个环节兼顾技术原理与实操命令,与 EMR-5.21.0(Hadoop 3.2.1 + Spark 3.5.3 + Hive 3.1.3)版本完全匹配。
一、集群状态确认与信息获取
1.1 集群运行状态确认
集群提交创建后,等待 10~15 分钟,当控制台集群列表中状态变为**「运行中」**,代表所有核心服务已启动完成。
- 进入集群详情页,在「集群服务」标签页可查看所有组件的运行状态,绿色对勾代表服务正常。
- 本教程标配组件:HDFS、YARN、HIVE、SPARK3、ZooKeeper,全部显示绿色即为正常。
1.2 核心信息获取
进入「节点管理」标签页,展开 Master 节点组,记录以下关键信息,后续所有操作都会用到:
- Master 主节点公网 IP:用于 SSH 登录、Web UI 访问
- 节点规格与配置:确认 CPU、内存、存储与购买配置一致
- 可用区与网络信息:确认 VPC、交换机绑定正常
1.3 节点角色理论说明
EMR 标准集群分为两类节点,各司其职:
| 节点类型 | 核心进程 | 作用 |
|---|---|---|
| Master 主节点 | NameNode、ResourceManager、Hive MetaStore、Spark HistoryServer | 集群管理节点,负责存储元数据、资源调度、任务管理,是集群的入口 |
| Core 核心节点 | DataNode、NodeManager | 工作节点,负责实际数据存储、计算任务执行,节点数量决定集群存储和计算能力 |
二、SSH 远程登录集群
2.1 登录前置条件
- 网络层面:Master 节点已挂载公网 IP,安全组已开放 22 端口(SSH 默认端口),EMR 默认会开放 22 端口。
- 凭证层面:创建集群时设置的 root 账号密码,或配置的 SSH 密钥对。
- 工具层面:Windows 可使用 Xshell、FinalShell、PowerShell;Mac/Linux 可直接使用终端。
2.2 登录操作步骤
打开终端工具,执行以下命令:
# 命令格式:ssh root@你的主节点公网IP
ssh root@120.xx.xx.xx输入创建集群时设置的 root 密码,回车即可登录。登录成功后命令提示符会变为:
[root@master-1-1 ~]#2.3 基础环境验证
登录后首先执行以下命令,确认系统与基础环境:
# 查看系统版本
cat /etc/centos-release
# 查看Java环境,大数据组件依赖Java运行
java -version三、核心组件功能验证(理论+实操)
3.1 Hadoop 生态验证
Hadoop 是整个大数据集群的底座,包含 HDFS 分布式存储和 YARN 资源调度两大核心。
3.1.1 进程验证
执行 jps 命令查看所有 Java 进程,正常运行应包含以下核心进程:
jps典型输出与对应说明:
NameNode:HDFS 主节点,管理文件系统元数据SecondaryNameNode:HDFS 辅助节点,定期合并元数据镜像DataNode:HDFS 数据节点,实际存储数据块(Core 节点上运行)ResourceManager:YARN 资源管理器,统一调度集群 CPU、内存NodeManager:YARN 节点管理器,管理单个节点的资源(Core 节点上运行)QuorumPeerMain:ZooKeeper 进程,提供分布式协调服务
理论说明:
jps是 JDK 自带的 Java 进程查看工具,大数据生态所有组件均为 Java 开发,因此通过 jps 可以快速验证服务是否启动。
3.1.2 版本验证
hadoop versionEMR-5.21.0 对应输出为 Hadoop 3.2.1-emr-1.3.6,代表基于开源 Hadoop 3.2.1 定制优化。
3.1.3 HDFS 文件系统操作
# 查看根目录下的文件
hdfs dfs -ls /
# 创建测试目录
hdfs dfs -mkdir /test
# 上传本地文件到HDFS
echo "hello emr" > test.txt
hdfs dfs -put test.txt /test
# 查看HDFS文件内容
hdfs dfs -cat /test/test.txt理论说明:HDFS 是分布式文件系统,数据分散存储在所有 Core 节点上,通过 NameNode 统一管理元数据,对外提供统一的文件系统视图。


3.2 Spark 计算引擎验证
Spark 是基于内存的分布式计算引擎,比传统 MapReduce 性能高 10~100 倍,是当前大数据开发的核心技能。
3.2.1 Spark Shell 交互式验证
执行以下命令启动 Spark 交互式终端:
spark-shell --master yarn --deploy-mode client启动成功标志:
- 出现 Spark 标志性 ASCII 图案
- 显示版本号
version 3.5.3-emr - 命令提示符变为
scala> - 提示
Spark context Web UI available at http://xxx:4040

基础测试:
// 并行化生成一个数组,计算元素总和
val arr = sc.parallelize(Array(1,2,3,4,5))
println(arr.sum())输入 :quit 即可退出 Spark Shell。

3.2.2 运行模式理论说明
--master yarn:指定使用 YARN 作为资源调度器,任务运行在集群上,而非本地--deploy-mode client:客户端模式,Driver 运行在当前提交节点,适合交互式调试--deploy-mode cluster:集群模式,Driver 运行在集群节点上,适合生产环境提交正式任务
3.3 Hive 数据仓库验证
Hive 是基于 Hadoop 的数据仓库工具,将 SQL 语句转换为 MapReduce/Spark 任务执行,是离线数仓的核心组件。
3.3.1 Hive 启动验证
执行以下命令启动 Hive 客户端:
hive启动成功后命令提示符变为 hive>。
基础测试:
-- 查看所有数据库
show databases;
-- 创建测试数据库
create database test_db;
-- 使用数据库
use test_db;
-- 退出Hive
exit;注意:Hive 遵循 SQL 语法规范,所有命令必须以分号
;结尾,否则会报解析错误。

3.3.2 启动常见提示说明
启动时出现的 SLF4J: Class path contains multiple SLF4J bindings 属于警告,不是错误,完全不影响使用。
- 原理:SLF4J 是日志门面接口,本身不实现日志功能,需要绑定具体的日志实现。EMR 中 Hive 和 Hadoop 各自携带了一个 log4j 实现包,导致类路径下存在多个绑定,SLF4J 检测到后打印警告,但会自动选择一个正常工作。
- 处理建议:学习场景直接忽略即可,无需处理。
四、Web UI 端口配置与访问
4.1 安全组原理说明
阿里云安全组相当于虚拟防火墙,通过入方向/出方向规则控制服务器端口的网络访问权限。默认仅开放 SSH 22 端口,大数据组件的 Web UI 端口需要手动开放。
4.2 安全组配置实操步骤
- 进入 ECS 控制台 → 安全组 → 找到集群关联的安全组 → 配置规则
- 选择「入方向」→「手动添加」,依次添加以下规则:
| 协议 | 端口范围 | 授权对象 | 对应服务 |
|---|---|---|---|
| TCP | 9870/9870 | 0.0.0.0/0 | HDFS NameNode 文件管理UI |
| TCP | 8088/8088 | 0.0.0.0/0 | YARN ResourceManager 资源调度UI |
| TCP | 18080/18080 | 0.0.0.0/0 | Spark 历史任务UI |
学习场景可使用
0.0.0.0/0放行所有 IP;生产环境建议仅填写本地公网 IP,提升安全性。
- 保存规则,等待 1~2 分钟生效。


4.3 核心 UI 访问与功能
使用 Master 公网 IP 访问,所有 UI 均为 HTTP 协议,不要使用 HTTPS。
| UI 名称 | 访问地址 | 核心功能 |
|---|---|---|
| HDFS 文件管理 | http://公网IP:9870 | 浏览 HDFS 文件系统、查看节点状态、数据块信息、存储容量 |
| YARN 资源调度 | http://公网IP:8088 | 查看集群资源使用情况、所有应用任务状态、任务日志、节点资源 |
| Spark 历史服务 | http://公网IP:18080 | 查看所有历史 Spark 任务的详细执行计划、DAG 图、性能指标、日志 |
注意:
4040端口是 Spark 任务运行时的临时 UI,仅在 spark-shell 或 Spark 任务运行期间存在,任务结束后端口自动关闭,属于正常现象。

五、常见问题排查
5.1 Web UI 无法访问
排查顺序(从高概率到低概率):
- 使用了内网域名:EMR 控制台显示的
master-1-1.c-xxx.emr.aliyuncs.com是内网域名,公网无法解析,必须使用公网 IP 访问。 - 安全组未开放端口:确认入方向规则已添加对应端口,且授权对象正确。
- 协议错误:所有原生 UI 都是 HTTP,手动加
https://会导致访问失败。 - 服务未启动:SSH 登录执行
jps确认对应进程存在,不存在则手动启动服务。 - 本地网络问题:关闭 VPN、代理,或切换手机热点测试;使用
telnet 公网IP 端口测试端口连通性。
5.2 SLF4J 多绑定警告
- 性质:警告,非错误,不影响任何功能。
- 原因:多个组件都携带了 SLF4J 的日志实现包,类路径重复。
- 处理:学习场景直接忽略;生产环境可移除多余的 jar 包,但不建议在预装集群中修改,避免破坏兼容性。
5.3 Hive 命令解析报错
- 报错信息:
ParseException line 1:0 cannot recognize input near 'exit' - 原因:Hive 命令必须以分号
;结尾,未加分号或格式错误会导致解析失败。 - 解决:输入
exit;或quit;,带分号结尾。
5.4 Spark 4040 端口访问失败
- 原因:4040 是 Spark Driver 的临时 UI,仅在任务运行期间存在,退出 spark-shell 后进程终止,端口自动关闭。
- 替代方案:访问 18080 端口的 Spark 历史服务器,可查看所有已完成任务的详情。
六、集群基础使用入门
6.1 HDFS 常用操作
# 创建目录
hdfs dfs -mkdir /data
# 递归创建多级目录
hdfs dfs -mkdir -p /data/input
# 上传文件
hdfs dfs -put 本地文件路径 /data/input
# 下载文件到本地
hdfs dfs -get /data/input/文件 本地路径
# 删除文件
hdfs dfs -rm /data/input/文件
# 删除目录
hdfs dfs -rm -r /data
# 查看目录大小
hdfs dfs -du -h /data6.2 Spark 基础编程示例
// 读取HDFS文件,统计单词数
val lines = sc.textFile("/test/test.txt")
val words = lines.flatMap(_.split(" "))
val wordCount = words.map((_, 1)).reduceByKey(_ + _)
wordCount.collect().foreach(println)
6.3 Hive 基础 SQL 操作
-- 创建表
create table student(
id int,
name string,
age int
) row format delimited fields terminated by ',';
-- 插入数据
insert into student values (1,'张三',20),(2,'李四',21);
-- 查询数据
select * from student where age > 20;
-- 统计数量
select count(*) from student;七、计费管理与集群释放
7.1 按量付费计费规则
- 计费粒度:按秒计费,从集群创建成功开始,到释放集群结束,精确到实际运行时长。
- 计费范围:包含 ECS 实例、云盘、公网带宽、EMR 服务费用。
- 停止计费条件:必须执行「释放集群」操作,仅停止服务不会停止云盘等资源的计费。
7.2 集群释放操作步骤
- 进入 EMR 控制台 → 集群管理 → 找到对应集群
- 点击右侧「更多」→「释放集群」
- 确认释放提示,输入验证信息,确认释放
- 集群状态变为「已释放」代表所有资源销毁,计费终止
7.3 重要注意事项
- 数据备份:释放集群后,HDFS 中的所有数据会永久删除,无法恢复,重要数据请提前导出到本地或阿里云 OSS。
- 及时释放:学习测试完成后立即释放集群,避免产生闲置费用。
- 配置保留:释放后集群配置无法保留,下次使用需要重新创建。
八、后续学习路径建议
- 基础阶段:熟练 HDFS 常用命令、YARN 任务调度原理、Spark RDD 编程、Hive SQL 基础
- 进阶阶段:Spark SQL、Spark Streaming 流计算、Hive 数仓建模、性能优化
- 实战阶段:用户行为分析项目、离线数据仓库项目、日志清洗与分析
- 生态拓展:Flink 实时计算、HBase 分布式数据库、Sqoop 数据同步、Presto 即席查询