Amazon EMR Serverless
无需集群管理即可运行 Apache Spark 和 Hive 作业,仅按实际使用的 vCPU 和内存时间计费的无服务器大数据处理服务
概述
Amazon EMR Serverless 是一项以无服务器方式运行 Apache Spark 和 Hive 作业的大数据处理服务。完全无需构建、扩缩容和补丁管理集群,只需提交作业即可自动配置所需资源。处理完成后资源自动释放,仅按实际使用的 vCPU 时间和内存时间计费。通过 EMR Runtime for Apache Spark,可在无额外费用的情况下实现相比开源版 Spark 最高 3.5 倍的加速。
应用程序与作业执行的生命周期
在 EMR Serverless 中首先创建应用程序。应用程序是定义 Spark 或 Hive 运行时环境的容器,需指定 EMR 发行版本 (emr-6.x、emr-7.x)。应用程序的状态包括 CREATING、CREATED、STARTING、STARTED、STOPPING、STOPPED、TERMINATED,仅在 STARTED 状态下接受作业。通过 StartJobRun API 提交作业,Spark 场景下需指定 JAR 文件或 Python 脚本的 S3 路径和入口点。作业提交后,EMR Serverless 自动配置 Worker 并开始处理。配置预初始化容量 (pre-initialized capacity) 后,Driver 和 Worker 会保持已初始化的就绪状态,作业可在数秒内启动。预初始化的 Worker 在应用程序空闲期间也会计费。作业完成后,超出预初始化容量的 Worker 会被释放。应用程序的自动停止功能默认启用 (截至 2026 年 10 月),空闲 15 分钟后应用程序本身也会转为 STOPPED 状态,并释放预初始化容量。
Worker 配置与成本控制
EMR Serverless 的 Worker 由 vCPU 和内存的组合定义,可根据作业特性进行自定义。根据用户指南的默认值 (截至 2026 年 10 月),Spark Driver 和 Executor 各分配 4 个核心和 14 GB 内存,但内存密集型处理可调整为 4 vCPU / 30 GB 等配置。通过设置最大 Worker 数可限制每个作业的资源消耗上限。成本控制的关键是应用程序级别的最大资源设置。通过 maxCapacity 指定 vCPU、内存和磁盘上限,可控制所有作业的总资源不超过此上限。费用按 Worker 从准备好运行到停止期间所用的 vCPU、内存和存储总量计算,按秒向上取整,最少 1 分钟 (截至 2026 年 10 月的定价页面)。作业日志默认保存在 EMR 托管存储中,最长 30 天,也可指定 S3 存储桶或 CloudWatch 作为输出位置。启用托管存储时可使用 Spark UI 等应用程序 UI。
与 S3 数据湖的集成模式
EMR Serverless 的一种架构是以 S3 为数据湖,通过 Spark 作业执行 ETL 处理。输入数据为 S3 上的 Parquet、ORC、CSV、JSON 文件,使用 Glue Data Catalog 作为元数据存储。Spark SQL 可直接引用 Glue Data Catalog 的表,分区裁剪和谓词下推自动应用。还支持对 Apache Iceberg 表的读写,可构建具有 ACID 事务、模式演进和时间旅行查询的数据管道。与 Step Functions 结合,可编排日常 ETL 管道。从 Step Functions 的任务状态调用 StartJobRun API,等待作业完成后进入下一步。配合 EventBridge Scheduler 设置每日触发,即可组成基于无服务器服务的定期批处理管道。
参考资料(AWS 官方)
本页的第一手信息来源是 AWS 官方网站及官方文档。最新的规格与价格请以下列官方页面为准。
如本页内容与官方文档不一致,请以官方文档为准。