安装Spark集群版

更新时间:
复制 MD 格式

本方案适用于需要多节点并行计算的大数据处理、机器学习模型训练、ETL 批处理等场景。

方案概述

本方案使用阿里云资源编排服务(ROS)的公共模板,在已有 VPC 网络基础上一键创建多台 ECS 实例,自动安装 JDK、Hadoop、Scala 和 Apache Spark,快速搭建 Spark 分布式集群环境。适用于需要多节点并行计算的大数据处理、机器学习模型训练、ETL 批处理等场景。

什么是 Apache Spark 集群

Apache Spark 是专为大规模数据处理设计的通用计算引擎。Spark 集群由一个 Master 节点和多个 Worker 节点组成:

节点角色

职责

Master

集群管理节点,负责资源调度、任务分发和集群监控。提供 Web UI(8080 端口)供用户查看集群状态

Worker

计算节点,接收 Master 分配的任务并执行实际的数据处理。Worker 数量可通过弹性伸缩组动态调整

本模板安装的软件版本如下:

组件

说明

版本

JDK

Java Development Kit,Java 运行环境

1.8.0

Hadoop

分布式系统基础架构,提供 HDFS 分布式存储

2.7.7

Scala

编程语言,Spark 核心框架基于 Scala 开发

2.12.1

Spark

通用大数据计算引擎,支持 SQL 查询、流处理、机器学习

2.1.0

集群版与单机版的区别

对比维度

单机版

集群版(本方案)

节点数量

1 台 ECS

1 台 Master + N 台 Worker(3~10 台)

计算能力

受限于单机资源

多节点并行,可水平扩展

弹性能力

Worker 节点由弹性伸缩组管理,可自动扩缩容

适用场景

开发测试、学习验证

生产级批处理、大规模数据分析

本方案的特点:基于已有 VPC 部署

与其他 ROS 部署方案不同,本模板要求使用已有的 VPC、交换机和安全组,不会新建网络资源。这种设计适用于:

  • 已有标准化网络环境,需要在现有 VPC 中添加 Spark 集群

  • 多个项目共享一个 VPC,避免重复创建网络资源

创建的资源清单

序号

资源名称

ROS 资源类型

数量

用途说明

1

ECS 云服务器实例

ALIYUN::ECS::Instance

1

Spark Master 节点,绑定 EIP,运行集群管理服务

2

弹性伸缩组

ALIYUN::ESS::ScalingGroup

1

管理 Spark Worker 节点,根据需求自动增减实例

3

RAM 角色

ALIYUN::RAM::Role

1

颁发短时有效的 STS 访问令牌,安全授权弹性伸缩操作

4

系统运维管理 OOS(CloudOps Orchestration Service)模板

ALIYUN::OOS::Template

2

创建生命周期挂钩,在 Worker 节点创建/释放时自动执行初始化/清理脚本

部署完成后获得的结果

模板成功执行后,将获得以下资源:

  • 一台 Spark Master ECS 实例(已绑定弹性公网 IP,提供集群管理 Web UI)

  • 多台 Spark Worker ECS 实例(由弹性伸缩组管理,默认 2 台)

  • 所有节点已安装 JDK 1.8.0、Hadoop 2.7.7、Scala 2.12.1、Spark 2.1.0

  • Master 与 Worker 节点已自动完成集群组网配置

  • 资源栈输出中提供 SparkWebSiteURL,可登录 Spark 管理控制台

说明

如需通过外网访问 SparkWebSiteURL,请在安全组添加入方向 8080 端口的访问规则。具体操作,请参见使用安全组

架构图

                          用户访问
                            ↓
                     EIP → Master ECS(8080端口)
                        ↙      ↓      ↘
                Worker-1   Worker-2   Worker-N
                   ↑          ↑          ↑
              弹性伸缩组自动管理(ESS ScalingGroup)
                             ↑
                    OOS生命周期挂钩
              (创建时自动安装Spark并加入集群)

前提条件

在使用本模板前,请确认以下条件:

  1. 账号权限:阿里云账号需要具有 ECS、VPC、EIP、ESS(弹性伸缩)、RAM、OOS 产品的创建权限。

  2. 已有网络资源:需提前创建好 VPC、交换机和安全组。如何创建,请参见专有网络与交换机

部署环节

部署参数

本模板要求使用已有 VPC 网络资源,以下参数均需在部署时填写。

参数名

类型

说明

示例值

现有 VPC 的实例 ID

String

VPC 实例 ID。如何查询,请参见专有网络与交换机

vpc-bp1m6fww66xbntjyc****

交换机可用区

String

专有网络下的交换机可用区 ID

华东 1 可用区 K

网络交换机 ID

String

专有网络下的交换机 ID。如何查询,请参见专有网络与交换机

vsw-bp183p93qs667muql****

业务安全组 ID

String

ECS 安全组 ID。如何查询,请参见使用安全组

sg-bp15ed6xe1yxeycg7o****

实例规格

String

ECS 实例规格(Master 和 Worker 共用),建议 4 核 8 GB 以上

ecs.e-c1m2.xlarge

实例镜像 ID

String

ECS 实例镜像

centos_7

实例密码

String

ECS 登录密码,长度 8~30,含大小写字母、数字和特殊字符

-

磁盘类型

String

系统盘类型:

  • cloud_efficiency(高效云盘)

  • cloud_ssd(SSD 云盘)

更多信息,请参见云盘概述

cloud_efficiency

系统盘空间

Number

系统盘大小,取值范围 20~500,单位 GB

40

实例数量

Number

Spark 集群节点总数量(含 Master),取值范围 3~10

3

部署方式

方式一:通过 ROS 公共模板部署(推荐)

  1. 登录资源编排控制台

  2. 在左侧导航栏,选择模板 > 公共模板 > 解决方案模板

  3. 在搜索框中输入 Spark 进行搜索,找到模板:Spark 集群版(已有 VPC)单击模板卡片中的创建资源栈

  4. 配置参数页面,输入资源栈名称,并按上表填写部署参数。

  5. 单击下一步:检查并确认,然后单击创建

  6. 在左侧导航栏,选择资源栈,在资源栈列表页面单击目标资源栈ID,在资源栈信息页签查看资源栈状态,等待状态变为CREATE_COMPLETE

  7. 单击输出页签,获取 SparkWebSiteURL

  8. 在浏览器中访问该 URL,登录 Spark 管理控制台即部署成功。

方式二:通过 ROS IaC Code 部署

IaC Code 是面向云基础设施的 AI 基础设施即代码助手,可根据自然语言描述生成 ROS 模板并部署,使用方式参见IaC Code快速入门

# Prompt
帮我在已有VPC中部署Spark分布式集群环境。
要求:
1. 使用已有的VPC、VSwitch和安全组(不新建网络资源)。
2. 创建1台Master ECS节点,绑定弹性公网IP。
3. 创建弹性伸缩组管理Worker节点,初始2台Worker。
4. 所有节点使用CentOS 7镜像。
5. 通过UserData脚本自动安装JDK 1.8、Hadoop 2.7.7、Scala 2.12.1、Spark 2.1.0。
6. Master和Worker节点自动完成集群组网配置。
7. 使用OOS模板创建生命周期挂钩,Worker扩容时自动安装Spark并加入集群。
8. 安全组开放入方向8080端口。
9. 资源栈输出SparkWebSiteURL。

部署后操作

验证 Spark 集群

  1. 在资源栈输出页签获取 SparkWebSiteURL

  2. 在浏览器中访问该 URL,看到 Spark 管理控制台页面即部署成功。

  3. 在 Spark Web UI 中确认 Worker 节点数量是否与设置的“实例数量 - 1”一致。

  4. 登录Master 节点后验证:

    java -version                  # 查看JDK版本
    hadoop version                 # 查看Hadoop版本
    spark-shell --version          # 查看Spark版本
    
    # 查看集群Worker状态
    cat $SPARK_HOME/conf/slaves    # 查看已注册的Worker节点列表

常见问题

Q1:部署失败,报错“The specified InstanceType is not available”

原因:所选ECS实例规格在指定可用区中没有库存。

解决方案:

  • 更换交换机所在的可用区后重新部署。

  • 云服务器ECS定价确认目标可用区的可用规格。

  • Spark 集群对内存需求较高,建议 Master 选择 4 核 8 GB 以上,Worker 选择 2 核 4 GB 以上。

Q2:部署成功但无法访问 SparkWebSiteURL

排查步骤

  1. 确认安全组入方向规则已放行 TCP 8080 端口,规则添加方式参见使用安全组

  2. 访问 ECS控制台-实例,进入实例详情页,确认弹性公网 IP 已成功绑定到实例。

  3. 登录Master实例后,确认服务状态:

    # 检查Spark Master进程
    ps -ef | grep spark
    # 检查8080端口监听
    netstat -tlnp | grep 8080
    # 手动启动Spark集群(如未运行)
    $SPARK_HOME/sbin/start-all.sh
  4. 查看 UserData 执行日志cat /var/log/messages | grep cloud-init

Q3:Worker 节点未注册到 Master

排查步骤

  1. 在 Spark Web UI(8080 端口)查看已注册的 Worker 列表。

  2. 登录 Worker 节点检查 Spark 进程是否运行。

  3. 检查 Worker 节点是否与 Master 节点在同一 VPC/VSwitch 内。

  4. 查看 Worker 日志:cat $SPARK_HOME/logs/spark-*-worker-*.out