使用函数工作流+函数计算轻松构建 ETL 离线数据处理系统

简介: 随着云计算、人工智能、物联网等新技术的应用普及,人类产生的数据呈现出了爆发式增长的态势,对数据处理的需求能力也提出了越来越高的要求。数据成了重要资产,收集、处理数据的能力成为了核心竞争力,比如:应用服务的运行监控,运营数据的分析,以及深度学习的数据过滤、预处理等,这些对已有数据的处理能力将直接影响服务的运营效率。

前言

随着云计算、人工智能、物联网等新技术的应用普及,人类产生的数据呈现出了爆发式增长的态势,对数据处理的需求能力也提出了越来越高的要求。数据成了重要资产,收集、处理数据的能力成为了核心竞争力,比如:应用服务的运行监控,运营数据的分析,以及深度学习的数据过滤、预处理等,这些对已有数据的处理能力将直接影响服务的运营效率。我们可以使用现成的 ETL 系统完成上述目的,但是在很多情况下您可能希望自建服务。比如:

  • 您的数据处理业务不定时运行,希望在无任务时,不消耗任何资源;
  • 您的数据处理需求只有简单的几个步骤,"杀鸡焉用牛刀"?还是自建来的快点;
  • 您的数据处理业务流程有较多的自定义步骤,但现成系统灵活性不足,自建才能满足业务需求;
  • 您不希望消耗过多精力搭建和维护系统中使用的各类开源数据处理模块,但希望在大并发数据处理请求的场景下能够有较为良好的性能表现。

如果您有上述需求,或者希望实现一个 高度灵活高度可靠低成本高性能 的离线数据处理系统,那么本文提供的 Serverless 技术方案将是您的最佳选择。

业务场景简介

场景:假设我们有一批待处理数据,数据的值为 data_1data_2。我们数据处理的目的是统计各类数据的出现次数,并将统计结果存储到数据仓库中。当数据量级达到一定程度,亦或数据源异构的情况下,我们很难一次性的通过一个进程在短时间内快速处理完成,在这种场景下,函数工作流 + 函数计算的组合提供了高效的解决方案。

在介绍方案细节前,先来了解下主要会使用到的两款产品:

  • 阿里云函数计算 是阿里云基于事件驱动的全托管计算服务,通过极强的弹性、多语言的支持、丰富的工具链帮助用户快速搭建 serverless 服务,应对瞬时波峰并免去运维烦恼,让您专注于业务逻辑。
  • 阿里云函数工作流 是阿里云分布式任务协同的全托管云服务,支持函数计算、自建服务(如 ECS 自建)等作为底层计算资源来实现您的业务编排。

为方便展示数据处理方面的核心能力,在数据仓库的存储方面,我们使用阿里云对象存储(OSS)来代表各种类型的数据库等作为基础存储设施。

下述方案将展示如何使用函数工作流 + 函数计算实现一个低成本高弹性的数据处理系统。在这个系统中,函数计算将根据数据量大小动态提供底层计算资源用于数据的处理、统计等工作,函数工作流将协助实现复杂业务上下游的逻辑编排。

具体方案

在一般的数据处理业务中,主要关注点如下:

数据源:需要处理的数据源。一般情况下,我们的数据往往来源于各类数据库、文本文件(日志文件)等;在本示例中,我们使用函数生成少量数据用作功能性的展示。在实际场景中,您可以使用各类自定义的数据源作为系统数据输入来源。

处理框架/模式:MapReduce,本示例中使用函数工作流实现

目的端:数据仓库。在本示例中,我们使用 OSS 作为数据仓库,即最终处理后数据的目的端。

数据处理流程

我们首先将原始数据随机分成 3 -5 个 shards,每个 shard 中两种类型的数据都有。对每个 shard 先分别进行类型统计,并将中间结果存储(map)。最后,我们统一处理各 shard 的统计结果,对结果求和并存储最终结果(reduce)。业务流程如下:

  1. 从数据源获取数据;
  2. 对数据按照某种规则(或随机)划分 shard;
  3. 使用MapReduce(提高数据并行处理能力)对数据进行处理;
  4. 存储至最终目的源。

结合我们所使用的阿里云服务,系统的模块及交互关系如下图:

_

图 1

方案示例

您可从 github 获取本示例的全部代码。代码库中提供了一键搭建本示例全资源的工具,在使用前,请确保您已开通阿里云对象存储、函数计算、函数工作流服务。

资源准备

一键搭建示例工程使用了阿里云的 资源编排 ROS 工具。首先您需要配置好 ALIYUN CLI 工具 ,之后 clone 本项目后工程目录下执行下述命令:

aliyun ros CreateStack --StackName=etl-stack1 --TemplateBody "$(cat ./ros.yaml)" --Parameters.1.ParameterKey=MainAccountID --Parameters.1.ParameterValue={YourAccountID} --Parameters.2.ParameterKey=RandomSuffix --Parameters.2.ParameterValue=stack1 --RegionId=cn-beijing --TimeoutInMinutes=10

其中,请将 {YourAccountID} 替换为您的主账号ID。"stack1" 参数可以使用随机字符串等自定义参数。

执行该命令后,我们将创建以下资源用于本次示例工程:

  • 访问控制 - RamRole

用于提供函数工作流的执行及函数计算的执行角色;

  • 函数工作流

您可以从 demo-etl-flow.yaml 获取本文所用的流程示例。您可以在 函数工作流控制台 查看创建结果。

  • 函数计算

    示例工程会创建三个函数,执行上述命令后您可以在 函数计算控制台 查看创建结果:

    • shards-spliter: 用于读取数据源,并依据某种规则对源数据划分 shard,将 shard 返回给工作流;
    • mapper: MapReduce 框架中的 Map 函数。在该函数中针对传入的 shard 数据进行过滤、清洗、计算。往往一次数据处理流程中将会根据 shard 数并行生成多个函数实例提高数据处理速度。每个 map 函数处理结束后,结果将会被存储到 oss 的特定目录下;
    • reducer: MapReduce 框架中的 Reduce 函数。在该函数中针对 map 的处理结果进行集成、合并,并推送最终结果至数据仓库(OSS)。
  • 对象存储(OSS):

    在本示例中对象存储将作为中间数据及最终数据的存储仓库。本示例会在 OSS 控制台创建一个名为 demo-etl-stack1 的 bucket。

系统原理及运行示例

本系统的关键部分在于 MapReduce 框架的实现。我们使用了函数工作流提供的 并行循环步骤 实现了根据数据 shard 数量动态创建 Map 实例的功能。在 shards-spliter.py 函数中,我们随机对数据进行了 shard 划分,并将划分结果返回给流程,在下一个并行循环步骤中,流程获取 shards-spliter.py 中的输出,并行创建了多个实例进行对应 shard 数据的计算。在最后一个步骤中,reducing.py 读取 OSS 中的中间结果进行聚合后,将最终结果存储至 OSS。

运行示例及执行结果:

result

小结

本文介绍了在 ETL 等离线数据处理场景下使用函数计算(FC)、函数工作流(FnF)实现无服务化的解决方案。您可以充分享受到 Serverless 所带来的高弹性、免运维、轻量化等技术红利,专注业务场景,快速实现业务价值。

知识链接

函数工作流:函数工作流文档,官网客户群(钉钉):23116481
函数工作流群二维码

函数计算:函数计算文档,官网客户群(钉钉):11721331
函数计算群二维码

欢迎加入函数计算、函数工作流官网客户群,与我们共同交流 Serverless 技术。

相关实践学习
【AI破次元壁合照】少年白马醉春风,函数计算一键部署AI绘画平台
本次实验基于阿里云函数计算产品能力开发AI绘画平台,可让您实现“破次元壁”与角色合照,为角色换背景效果,用AI绘图技术绘出属于自己的少年江湖。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
目录
相关文章
数据采集 Web App开发 人工智能
266 0
|
5月前
|
数据采集 Web App开发 人工智能
基于函数计算FC构建 Browser Tool Sandbox 详解与实操
本文介绍了如何基于阿里云函数计算(FC)构建一个安全、可控的 Browser Tool Sandbox,支持多种浏览器自动化操作方式,包括 Playwright、Puppeteer、Browser Use 和 REST API 等,为 AI Agent 安全高效地操作浏览器提供了完整的技术方案。
|
7月前
|
分布式计算 Serverless OLAP
实时数仓Hologres V3.1版本发布,Serverless型实例从零开始构建OLAP系统
Hologres推出Serverless型实例,支持按需计费、无需独享资源,适合新业务探索分析。高性能查询内表及MaxCompute/OSS外表,弹性扩展至512CU,性能媲美主流开源产品。新增Dynamic Table升级、直读架构优化及ChatBI解决方案,助力高效数据分析。
实时数仓Hologres V3.1版本发布,Serverless型实例从零开始构建OLAP系统
|
9月前
|
JSON 安全 Serverless
MCP Server 之旅第 2 站: 从 0 到 1 - MCP Server 市场构建与存量 OpenAPI 转 MCP Server
本文聚焦MCP协议在企业应用中的两大核心痛点:如何将社区主流STDIO MCP Server一键转为可插拔Remote MCP Server,以及如何实现存量OpenAPI向MCP Server的智能化转型。文章通过具体示例,展示了基于函数计算和协议转译Adapter的解决方案,支持npm/pip生态,实现零改造一键迁移,大幅降低成本。
|
9月前
|
JSON 安全 Serverless
MCP Server On FC之旅2: 从0到1-MCP Server市场构建与存量OpenAPI转MCP Server
本文介绍了将社区主流STDIO MCP Server一键转为企业内可插拔Remote MCP Server的方法,以及存量API智能化重生的解决方案。通过FunctionAI平台模板实现STDIO MCP Server到SSE MCP Server的快速部署,并可通过“npx”或“uvx”命令调试。同时,文章还探讨了如何将OpenAPI规范数据转化为MCP Server实例,支持API Key、HTTP Basic和OAuth 2.0三种鉴权配置。该方案联合阿里云百练、魔搭社区等平台,提供低成本、高效率的企业级MCP Server服务化路径,助力AI应用生态繁荣。
1233 40
|
9月前
|
人工智能 运维 安全
阿里云 Serverless 助力海牙湾构建弹性、高效、智能的 AI 数字化平台
海牙湾(G-Town)是一家以“供应链+场景+技术+AI”为核心驱动力的科技公司,致力于为各行业提供数字化转型解决方案。通过采用阿里云Serverless架构,解决了弹性能力不足、资源浪费与运维低效的问题。SAE全托管特性降低了技术复杂度,并计划进一步探索Serverless与AI结合,推动智能数字化发展。海牙湾业务覆盖金融、美妆、能源等领域,与多家知名企业建立战略合作,持续优化用户体验和供应链决策能力,保障信息安全并创造可量化的商业价值。未来,公司将深化云原生技术应用,助力更多行业实现高效数字化转型。
656 19
|
10月前
|
自然语言处理 安全 数据挖掘
Hologres+函数计算+Qwen3,对接MCP构建企业级数据分析 Agent
本文介绍了通过阿里云Hologres、函数计算FC和通义千问Qwen3构建企业级数据分析Agent的解决方案。大模型在数据分析中潜力巨大,但面临实时数据接入与跨系统整合等挑战。MCP(模型上下文协议)提供标准化接口,实现AI模型与外部资源解耦。方案利用SSE模式连接,具备高实时性、良好解耦性和轻量级特性。Hologres作为高性能实时数仓,支持多源数据毫秒级接入与分析;函数计算FC以Serverless模式部署,弹性扩缩降低成本;Qwen3则具备强大的推理与多语言能力。用户可通过ModelScope的MCP Playground快速体验,结合TPC-H样例数据完成复杂查询任务。
|
10月前
|
分布式计算 运维 搜索推荐
立马耀:通过阿里云 Serverless Spark 和 Milvus 构建高效向量检索系统,驱动个性化推荐业务
蝉妈妈旗下蝉选通过迁移到阿里云 Serverless Spark 及 Milvus,解决传统架构性能瓶颈与运维复杂性问题。新方案实现离线任务耗时减少40%、失败率降80%,Milvus 向量检索成本降低75%,支持更大规模数据处理,查询响应提速。
526 57
|
11月前
|
人工智能 运维 NoSQL
Dify x Tablestore 构建低成本、Serverless 知识库
本文介绍如何基于Dify与阿里云Tablestore构建检索增强生成(RAG)系统,解决大模型知识时效性和领域适配性问题,该方案具备低代码、Serverless免运维、高可靠、弹性扩展及低成本等优势。文章通过答疑助手的案例,详细说明了创建Tablestore实例、配置Dify、构建与验证知识库的步骤。
1293 11
Dify x Tablestore 构建低成本、Serverless 知识库
|
4月前
|
人工智能 运维 Kubernetes
Serverless 应用引擎 SAE:为传统应用托底,为 AI 创新加速
在容器技术持续演进与 AI 全面爆发的当下,企业既要稳健托管传统业务,又要高效落地 AI 创新,如何在复杂的基础设施与频繁的版本变化中保持敏捷、稳定与低成本,成了所有技术团队的共同挑战。阿里云 Serverless 应用引擎(SAE)正是为应对这一时代挑战而生的破局者,SAE 以“免运维、强稳定、极致降本”为核心,通过一站式的应用级托管能力,同时支撑传统应用与 AI 应用,让企业把更多精力投入到业务创新。
589 30

相关产品

  • 函数计算