通过Serverless Spark提交PySpark流任务的实践体验

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
大数据开发治理平台 DataWorks,不限时长
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
简介: EMR Serverless Spark服务是阿里云推出的一种全托管、一站式的数据计算平台,旨在简化大数据计算的工作流程,让用户更加专注于数据分析和价值提炼,而非基础设施的管理和运维。下面就跟我一起通过Serverless Spark提交PySpark流任务吧。

EMR Serverless Spark服务是阿里云推出的一种全托管、一站式的数据计算平台,旨在简化大数据计算的工作流程,让用户更加专注于数据分析和价值提炼,而非基础设施的管理和运维。下面就跟我一起通过Serverless Spark提交PySpark流任务吧。

前提条件

已创建工作空间,详情请参见创建工作空间

操作流程

步骤一:创建实时数据流集群并产生消息

  1. 在EMR on ECS页面,创建包含Kafka服务的实时数据流集群,详情请参见创建集群
  2. 登录EMR集群的Master节点,详情请参见登录集群
  3. 执行以下命令,切换目录。
cd /var/log/emr/taihao_exporter
  1. 执行以下命令,创建Topic。
# 创建名为taihaometrics的Topic,分区数10,副本因子2。
kafka-topics.sh --partitions 10 --replication-factor 2 --bootstrap-server core-1-1:9092 --topic taihaometrics --create
  1. 执行以下命令,发送消息。
# 使用kafka-console-producer发送消息到taihaometrics Topic。
tail -f metrics.log | kafka-console-producer.sh --broker-list core-1-1:9092 --topic taihaometrics

步骤二:新增网络连接

  1. 进入网络连接页面。
  1. 在EMR控制台的左侧导航栏,选择EMR Serverless > Spark
  2. Spark页面,单击目标工作空间名称。
  3. EMR Serverless Spark页面,单击左侧导航栏中的网络连接
  1. 网络连接页面,单击新增网络连接
  2. 新增网络连接对话框中,配置以下信息,单击确定

参数

说明

连接名称

输入新增连接的名称。例如,connection_to_emr_kafka。

专有网络

选择与EMR集群相同的专有网络。

如果当前没有可选择的专有网络,请单击创建专有网络,前往专有网络控制台创建,详情请参见创建和管理专有网络

交换机

选择与EMR集群部署在同一专有网络下的相同交换机。

如果当前可用区没有交换机,请单击虚拟交换机,前往专有网络控制台创建,详情请参见创建和管理交换机

  1. 状态显示为已成功时,表示新增网络连接成功。

步骤三:为EMR集群添加安全组规则

  1. 获取集群节点交换机的网段。
    您可以在节点管理页面,单击节点组名称,查看关联的交换机信息,然后登录专有网络管理控制台,在交换机页面获取交换机的网段。

  2. 添加安全组规则。
  1. 集群管理页面,单击目标集群的集群ID。
  2. 基础信息页面,单击集群安全组后面的链接。
  3. 在安全组规则页面,单击手动添加,填写端口范围和授权对象,然后单击保存

参数

说明

端口范围

填写9092端口。

授权对象

填写前一步骤中获取的指定交换机的网段。

重要

为防止被外部的用户攻击导致安全问题,授权对象禁止填写为0.0.0.0/0。


步骤四:上传JAR包至OSS

上传kafka.zip中的所有JAR包至OSS,上传操作可以参见简单上传

步骤五:上传资源文件

  1. 在EMR Serverless Spark页面,单击左侧导航栏中的资源上传
  2. 资源上传页面,单击上传文件
  3. 上传文件对话框中,单击待上传文件区域选择pyspark_ss_demo.py文件。

步骤六:新建并启动流任务

  1. 在EMR Serverless Spark页面,单击左侧的任务开发
  2. 单击新建
  3. 输入任务名称,新建一个Application(流任务) > PySpark类型的任务,然后单击确定
  4. 在新建的任务开发中,配置以下信息,其余参数无需配置,然后单击保存

参数

说明

主Python资源

选择前一个步骤中在资源上传页面上传的pyspark_ss_demo.py文件。

引擎版本

Spark的版本,详情请参见引擎版本介绍

运行参数

EMR集群core-1-1节点的内网IP地址。您可以在EMR集群的节点管理页面的Core节点组下查看。

Spark配置

Spark的配置信息。本文示例如下。

spark.jars oss://<yourBucket>/kafka-lib/commons-pool2-2.11.1.jar,oss://<yourBucket>/kafka-lib/kafka-clients-2.8.1.jar,oss://<yourBucket>/kafka-lib/spark-sql-kafka-0-10_2.12-3.3.1.jar,oss://<yourBucket>/kafka-lib/spark-token-provider-kafka-0-10_2.12-3.3.1.jar
spark.emr.serverless.network.service.name connection_to_emr_kafka

说明

spark.jars用于指定Spark任务运行时需要加载的外部JAR包路径。本文示例为您步骤四中上传至OSS的路径,请您根据实际情况替换。


  1. 单击发布
  2. 发布任务对话框中,单击确定
  3. 启动流任务。
  1. 单击前往运维
  2. 单击启动

步骤七:查看日志

  1. 单击日志探查页签。
  2. Driver日志列表中,单击stdOut.log
    在打开的日志文件中,您可以看到应用程序执行的相关信息以及返回的结果。

结论:

EMR Serverless Spark对于追求敏捷开发、快速迭代、降低成本以及希望避免复杂运维的大数据项目来说是一个很有吸引力的选择。它特别适合那些希望快速搭建数据处理应用、有弹性资源需求的企业和开发者。然而,对于特定的Hive使用场景和高度定制化的集群管理需求,用户在采用前应详细评估其功能和成本效益。

优点:

  1. 零运维:作为Serverless服务,EMR Serverless Spark免去了集群管理和运维的复杂性,用户无需担心资源预估、扩缩容等问题,降低了运维成本。
  2. 按需付费:采用按实际使用量计费的模式,用户只需为实际消耗的计算和存储资源付费,有助于成本控制和优化预算。
  3. 兼容性:100%兼容Spark,意味着现有的Spark应用可以无缝迁移至EMR Serverless Spark,减少迁移成本和学习曲线。
  4. 集成性:与阿里云的其他服务如OSS(对象存储服务)紧密集成,便于数据的存储与分析,同时也支持与实时计算Flink等组件的集成,实现流批一体的处理能力。
  5. 易用性:提供工作空间的概念,作为业务开发的基本单元,集成了任务、资源和权限管理,便于团队协作和权限控制。
  6. 性能优化:尽管具体性能指标需根据实际使用情况评估,但阿里云在Spark SQL性能优化方面有深厚积累,EMR Serverless Spark可能继承了这些优化特性,有助于提升数据分析的效率和效果。

缺点或注意事项:

  1. Hive支持限制:EMR Serverless Spark当前使用的Hive作业引擎是Tez,不支持Hive on Spark,对于依赖特定Hive特性的用户可能需要评估影响。
  2. 学习曲线:尽管Spark兼容性高,但初次接触Serverless概念和阿里云平台的用户仍需时间学习相关服务的使用和最佳实践。
  3. 网络依赖:由于服务完全基于云环境,对外网访问的稳定性依赖于云服务商的网络质量及用户的网络环境,可能需要关注网络延迟和带宽问题。
  4. 成本考量:虽然按需付费模式灵活,但在高并发或大规模数据处理场景下,成本可能会迅速上升,需要精细的成本监控和管理。
相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
7天前
|
运维 Serverless 数据库
函数计算产品使用问题之如何并行运算函数计算任务,并对任务计算后的结果再进行聚合运算
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
7天前
|
分布式计算 运维 Serverless
EMR Serverless Spark PySpark流任务体验报告
阿里云EMR Serverless Spark是一款全托管的云原生大数据计算服务,旨在简化数据处理流程,降低运维成本。测评者通过EMR Serverless Spark提交PySpark流任务,体验了从环境准备、集群创建、网络连接到任务管理的全过程。通过这次测评,可以看出阿里云EMR Serverless Spark适合有一定技术基础的企业,尤其是需要高效处理大规模数据的场景,但新用户需要投入时间和精力学习和适应。
88 42
|
2天前
|
分布式计算 Hadoop Serverless
数据处理的艺术:EMR Serverless Spark实践及应用体验
阿里云EMR Serverless Spark是基于Spark的全托管大数据处理平台,融合云原生弹性与自动化,提供任务全生命周期管理,让数据工程师专注数据分析。它内置高性能Fusion Engine,性能比开源Spark提升200%,并有成本优化的Celeborn服务。支持计算存储分离、OSS-HDFS兼容、DLF元数据管理,实现一站式的开发体验和Serverless资源管理。适用于数据报表、科学项目等场景,简化开发与运维流程。用户可通过阿里云控制台快速配置和体验EMR Serverless Spark服务。
|
5天前
|
弹性计算 分布式计算 DataWorks
DataWorks产品使用合集之spark任务如何跨空间取表数据
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
8 1
|
11天前
|
SQL 分布式计算 大数据
MaxCompute操作报错合集之使用spark.sql执行rename分区操作,遇到任务报错退出的情况,该怎么办
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
|
5天前
|
Cloud Native 安全 开发者
云原生架构的演进与实践:从微服务到无服务器计算
本文深入探讨了云原生技术的最新进展,特别关注微服务和无服务器计算模型。通过分析相关研究数据和行业案例,文章揭示了云原生架构如何推动现代应用开发,提升运维效率,并实现资源的最优化配置。文中详细讨论了云原生生态系统中的关键组成部分,包括容器化、自动化管理工具和服务网格,以及它们如何共同促进敏捷性和可扩展性。此外,文章还分析了云原生安全策略的重要性,以及如何在保障安全的同时,保持系统的灵活性和高效性。
|
9天前
|
分布式计算 Serverless 数据处理
Serverless Spark计算服务
Serverless Spark计算服务
|
4天前
|
运维 Serverless 应用服务中间件
Serverless 应用引擎产品使用合集之关于OSS映射目录的大小限制,如何可以跳过
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
Serverless 应用引擎产品使用合集之关于OSS映射目录的大小限制,如何可以跳过
|
4天前
|
运维 Serverless API
Serverless 应用引擎产品使用合集之通过 API 调用 /tagger/v1/interrogate 时,出现unsupported protocol scheme "" 错误,如何处理
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
4天前
|
缓存 运维 监控
Serverless 应用引擎产品使用合集之在使用函数计算 FC 部署 stable-diffusion 应用时,选了 tagger 扩展插件却拿不到提示词,还报错“Error”,是什么原因
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。

热门文章

最新文章