全托管一站式大规模数据处理和分析Serverless平台 | EMR Serverless Spark 评测

本文涉及的产品
对象存储 OSS,20GB 3个月
函数计算FC,每月15万CU 3个月
对象存储 OSS,内容安全 1000次 1年
简介: 【7月更文挑战第6天】全托管一站式大规模数据处理和分析Serverless平台 | EMR Serverless Spark 评测

全托管一站式大规模数据处理和分析Serverless平台 | EMR Serverless Spark 评测

在开始今天的评测之前,当然还是老规矩,先来介绍一下我们今天上场的主角 EMR Serverless Spark,那么什么是 EMR Serverless Spark 呢?

EMR Serverless Spark

关于EMR Serverless Spark,以下是一段来自官方的定义EMR Serverless Spark是一款云原生,专为大规模数据处理和分析而设计的全托管Serverless产品。它为企业提供了一站式的数据平台服务,包括任务开发、调试、调度和运维等,极大地简化了数据处理的全生命周期工作流程。使用EMR Serverless Spark,企业可以更专注于数据分析和价值提炼,提高工作效率。

对于企业来说,就是数据处理和分析的工作交给 EMR Serverless Spark 平台做,企业可以更专注于由数据分析所带来的价值提炼

image.png

了解了 EMR Serverless Spark 的主要方向之后,我们再来看一张图来了解 EMR Serverless Spark 的应用场景,也只有有了落地场景的产品才是好产品,不是吗

image.png

好了,关于 EMR Serverless Spark  的产品定位以及应用场景有了基础的了解之后,下面我们开始上手体验。由于本次官方的测评文档中并没有相关的建议体验场景,那么这里我给大家推荐一下官方 EMR Serverless Spark  产品文档中的几大实践教程来体验,教程地址:https://help.aliyun.com/zh/emr/emr-serverless-spark/use-cases/?spm=a2c4g.11186623.0.0.360717035nMMaF

image.png

考虑到前面几种应该有小伙伴已经操作过了,这里我就选择最后一个带大家来一起感受一下来自全托管一站式大规模数据处理和分析Serverless平台 | EMR Serverless Spark 的魅力吧。

在PySpark程序中使用Python三方库

PySpark与 Python、EMR Serverless Spark

今天的实操主题就是在PySpark程序中使用Python三方库,那么在实操之前先来介绍一下 PySpark与 Python、EMR Serverless Spark的小关系。 PySpark作业往往需要借助Python第三方库来增强数据处理和分析能力,通过将这些三方库集成到Serverless Spark环境中,从而确保作业在分布式计算场景下的稳定性和灵活性。

简单的关系捋明白了,下面再来说说今天操作会用到的Conda和PEX这两种方法:【Conda是一个跨平台的包管理和环境管理系统,它允许用户轻松创建、保存、加载和切换多个环境,每个环境都可以拥有独立的Python版本和库依赖。PEX (Python EXecutable) 是一个工具,它可以将Python应用及其所有依赖打包进一个可执行文件中。

说完这些下面就开始准备资源了。

资源准备

工作空间是Serverless Spark的基本单元,用于管理任务、成员、角色和权限。所有的任务开发都需要在具体的工作空间内进行。因此,在开始任务开发之前,我们需要先创建工作空间。

创建工作空间

创建工作空间,那么首先登录E-MapReduce 控制台:https://emr-next.console.aliyun.com/?spm=a2c4g.11186623.0.0.13665d79vhK9Wr#/region/cn-hangzhou/resource/all/overview

image.png

点击【Spark】在授权页面依次完成授权

image.png

授权操作比较简单,对于【同意授权】按钮,直接点击即可完成授权,对于【去授权】在点击后的跳转页面点击【同意授权】就可以了

image.png

完成授权后,在【Spark】页面就可以看到【创建工作空间】按钮

image.png

在弹出的创建工作空间页面输入工作空间名称【emr-2024】点击如图所示红框,准备基础资源

image.png

点击【开通DLF】跳转到开通DLF页面

image.png

点击【免费开通数据湖构建】后在跳转的页面完成 数据湖构建 的开通,在数据湖构建 控制台:https://dlf.console.aliyun.com/cn-hangzhou/home

image.png

点击【开通】完成访问云资源的授权操作

image.png

此时的 数据湖构建 才算开通成功

image.png

再次回到创建工作空间页面,可以看到刚才开通成功的 数据湖构建 DLF 已经自动选择成功,下面需要到 OSS 控制台创建工作空间基础路径

image.png

进入OSS控制台:https://oss.console.aliyun.com/bucket?spm=5176.21192661.0.0.39b09037mwSVpD

image.png

点击【创建Bucket】,输入Bucket 名称【emr-oss-2024】,地域选择【杭州】

image.png

开启 HDFS 服务后选择【完成创建】

image.png

在弹出的页面勾选协议完成Bucket创建

image.png

再次回到创建工作空间页面,完成工作空间的创建

image.png

上传资源文件到OSS

单击kmeans.pykmeans_data.txt,下载所需资源文件,并上传到OSS空间,进入到OSS控制台:https://oss.console.aliyun.com/bucket?spm=a2c6h.13046898.publish-article.12.120f6ffaHS2Z1w,上传 脚本kmeans.py和数据文件kmeans_data.txt 到OSS 平台

image.png

点击【上传文件】完成上传,上传成功后如图

image.png

云服务器ECS

创建云服务器ECS实例,进入到 ECS控制台:https://ecs.console.aliyun.com/home ,点击【创建我的ECS】

image.png

选择【按量付费】,【杭州】地域,服务器规格选择基础规格,操作系统选择 Alibaba Cloud Linux 3系统

image.png

其他的默认,服务器密码选择【自定义密码】

image.png

实例名称修改为【emr-ecs-2024】勾选协议后选择【确认下单】完成云服务器ECS的创建

image.png

云服务器ECS创建成功

image.png

这里需要用到 443端口,如果默认安全组没有开通这个端口需要自行去安全组开通

image.png


使用Conda

点击云服务器ECS控制台的实例后面操作按钮【远程连接】输入服务器密码,登录 ECS实例

image.png

执行如下命令安装Miniconda

wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
chmod +x Miniconda3-latest-Linux-x86_64.sh

./Miniconda3-latest-Linux-x86_64.sh -b
source miniconda3/bin/activate

执行如下命令构建使用Python 3.8和numpy的Conda环境

conda create -y -n pyspark_conda_env -c conda-forge conda-pack numpy python=3.8
conda activate pyspark_conda_env
conda pack -f -o pyspark_conda_env.tar.gz

上传 pyspark_conda_env.tar.gz 到OSS

由于pyspark_conda_env.tar.gz 文件目前在云服务器ECS上,因此需要先找到  pyspark_conda_env.tar.gz 的路径 /root

image.png

点击 ECS 终端连接的【文件】找到/root 下面需要下载的文件 pyspark_conda_env.tar.gz

image.png

点击下载文件,等待文件下载成功之后上传到 OSS 的Bucket列表下

image.png

上传到OSS控制台之后如图

image.png


开发并运行任务

进入 EMR 工作空间,点击工作空间名称进入工作空间

image.png

单击【任务开发】-【新建】

image.png

输入任务名称,选择任务类型

image.png

参数参照文档中的要求

image.png

按照文档中填写如图内容后,点击【运行】

image.png

点击【运行】按钮后,在【运行记录】点击【详情】

image.png

等待任务显示运行【已成功】

image.png

点击【日志探查】就可以看到相关的运行日志了

image.png

到这里,使用Conda完成 PySpark类型 Application(批任务)的操作就完成了。下面开始使用PEX

使用PEX

使用PEX的操作流程与使用 Conda 的流程是一致的,区别是命令以及基础工具的不同,执行命令 安装PEX与wheel工具

pip3.8 install --user pex wheel \
  --trusted-host mirrors.cloud.aliyuncs.com \
  -i http://mirrors.cloud.aliyuncs.com/pypi/simple/

下载所需库的wheel文件至临时目录

pip3.8 wheel -w /tmp/wheel \
  pyspark==3.3.1 pandas==1.5.3 pyarrow==15.0.1 numpy==1.24.4 \
  --trusted-host mirrors.cloud.aliyuncs.com \
  -i http://mirrors.cloud.aliyuncs.com/pypi/simple/

生成PEX文件

pex -f /tmp/wheel --no-index \
  pyspark==3.3.1 pandas==1.5.3 pyarrow==15.0.1 numpy==1.24.4 \
  -o spark331_pandas153.pex

上传 spark331_pandas153.pex 到OSS

同样的办法,将服务器ECS生成的spark331_pandas153.pex 下载到本地然后上传到 OSS Bucket中。

开发并运行任务

这一步的操作和使用 Conda操作基本也是相同的,只是在任务参数有所不同,如下

image.png

后续的操作补充任务参数后,点击【运行】按钮等待任务运行成功操作是一致的。

释放资源

实验操作完成之后,如果是本次测评使用,后续暂时没有使用场景的话,建议先释放资源比较合适,防止造成不必要的资源浪费。

释放ECS

首先释放云服务器ECS 资源,进入ECS控制台:https://ecs.console.aliyun.com/server/region/cn-hangzhou  选择创建的ECS 实例,点击右侧更多操作,选择【释放】

image.png

在弹出页面选择【立即释放】

image.png

点击【下一步】后勾选协议点击【确定】输入短信验证码完成云服务器ECS 实例的释放

image.png

删除OSS

登录OSS控制台:https://oss.console.aliyun.com/overview 点击【Bucket列表】选择刚才创建的 Bucket 名称

image.png

进入 Bucket 详情页面,先删除文件,然后删除 Bucket

image.png

点击【删除Bucket】在页面选择【立即删除】

image.png

点击【立即删除】输入 Bucket名称之后给出错误提示

image.png

然后根据错误提示重新检查了 Bucket 文件发现还有未删除的文件

image.png

删除Bucket 列表下所有文件后再次尝试删除Bucket,删除成功。

删除EMR工作空间

进入到EMR 工作空间列表页面:https://emr-next.console.aliyun.com/?spm=a2c4g.11186623.0.0.13665d79vhK9Wr#/region/cn-hangzhou/resource/all/serverless/spark/list

点击工作空间右侧【删除】

image.png

输入工作空间名称后点击【确定】完成工作空间的删除

image.png

操作体验

这里来说一下本次关于 使用全托管一站式大规模数据处理和分析Serverless平台 | EMR Serverless Spark  来在PySpark程序中使用Python三方库 的操作,整体上操作文档写的算比较详细了,只是在操作过程中,关于创建工作空间时会需要用到 数据源构建DLF 和 OSS存储文档中没有详细写明操作步骤,不过好在这两项操作比较简单容易理解


在后续的使用Conda 构建使用Python 3.8和numpy的Conda环境后生成的文件

pyspark_conda_env.tar.gz

是在云服务器ECS上的,文档没有说明如何去 云服务器ECS上下载打包好的文件,这里我也是通过一段摸索才最终找到了下载云服务器ECS 到本地的方法,如下

image.png

这一点希望可以在文档中补充出来,毕竟从云服务器ECS上下载文件的操作比较少,因此可能不太会注意这点。后续其他的的操作,包括操作的便携性,数据开发体验整个过程都是很不错的,只需要配置具体的脚本,EMR Serverless Spark就可以根据您创建的任务稳定的运行,这样就大大降低了企业开发人员的学习成本和操作成本,是比较友好的。

既然EMR Serverless Spark为企业提供了一站式的数据平台服务,那么基于大数据分析, EMR Serverless Spark 可以与以下数据产品联动组合,如图

image.png


相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
21天前
|
消息中间件 运维 安全
C5GAME 游戏饰品交易平台借助 RocketMQ Serverless 保障千万级玩家流畅体验
游戏行业蓬勃发展,作为国内领先的 STEAM 游戏饰品交易的服务平台,看 C5GAME 如何利用 RocketMQ Serverless 技术,为千万级玩家提供流畅的游戏体验,同时降低成本并提升运维效率。
C5GAME 游戏饰品交易平台借助 RocketMQ Serverless 保障千万级玩家流畅体验
|
2月前
|
SQL 分布式计算 Serverless
EMR Serverless Spark:一站式全托管湖仓分析利器
本文根据2024云栖大会阿里云 EMR 团队负责人李钰(绝顶) 演讲实录整理而成
177 2
|
2月前
|
存储 Serverless API
打造你的专属语音助手,基于函数计算托管 CosyVoice 语音模型
今天分享一下,基于阿里云函数计算 FC 以及 CAP(云应用开发平台),极速托管专属的 CosyVoice 应用。并且我们提供了 API 调用方案以及镜像构建源码方便您根据自己的业务任意 DIY。
449 11
|
3月前
|
SQL 分布式计算 Serverless
阿里云 EMR Serverless Spark 版正式开启商业化
阿里云 EMR Serverless Spark 版正式开启商业化,内置 Fusion Engine,100% 兼容开源 Spark 编程接口,相比于开源 Spark 性能提升300%;提供 Notebook 及 SQL 开发、调试、发布、调度、监控诊断等一站式数据开发体验!
172 3
阿里云 EMR Serverless Spark 版正式开启商业化
|
4月前
|
存储 人工智能 JSON
基于函数计算FC一键部署ComfyUI绘画平台体验
【8月更文挑战第11天】基于函数计算FC一键部署ComfyUI绘画平台体验
149 1
|
3月前
|
缓存 前端开发 JavaScript
|
4月前
|
SQL 大数据 数据管理
EMR Serverless StarRocks体验测评
【8月更文挑战第14天】EMR Serverless StarRocks体验测评
91 0
|
4月前
|
Kubernetes Serverless 调度
异步任务处理系统问题之在阿里云函数计算平台上用户提交异步任务的问题如何解决
异步任务处理系统问题之在阿里云函数计算平台上用户提交异步任务的问题如何解决
|
4月前
|
监控 Java Serverless
美团 Flink 大作业部署问题之想在Serverless平台上实时查看Spring Boot应用的日志要怎么操作
美团 Flink 大作业部署问题之想在Serverless平台上实时查看Spring Boot应用的日志要怎么操作
|
4月前
|
机器学习/深度学习 Cloud Native Serverless
Serverless 架构问题之CNCF基金会托管的CloudEvents项目内容如何解决
Serverless 架构问题之CNCF基金会托管的CloudEvents项目内容如何解决
39 0