找回密码
 立即注册
查看: 35|回复: 0

数据词典:Beam

[复制链接]

656

主题

70

回帖

2291

积分

管理员

积分
2291
发表于 2025-11-7 13:35:16 | 显示全部楼层 |阅读模式
在大数据处理领域,开发者经常要用到很多不同的技术、框架、API、开发语言和SDK。根据不同的企业业务系统开发需求,开发者很可能会用MapReduce进行批处理,用Spark SQL进行交互式查询,用Flink实现实时流处理,还有可能用到基于云端的机器学习框架。大量的开源大数据产品(比如MapReduceSparkFlinkStormApex等),为大数据开发者提供了丰富的工具的同时,也增加了开发者选择合适工具的难度,尤其对于新入行的开发者来说更是如此。新的分布式处理框架可能带来更高的性能、更强大的功能和更低的延迟,但是,用户切换到新的分布式处理框架的代价也非常大——需要学习一个新的大数据处理框架,并重写所有的业务逻辑。解决这个问题的思路包括两个部分:首先,需要一个编程范式,能够统一、规范分布式数据处理的需求,例如,统一批处理和流处理的需求;其次,生成的分布式数据处理任务,应该能够在各个分布式执行引擎(如SparkFlink等)上执行,用户可以自由切换分布式数据处理任务的执行引擎与执行环境。Apache Beam的出现,就是为了解决这个问题。
Beam是由谷歌贡献的Apache顶级项目,它的目标是为开发者提供一个易于使用、却又很强大的数据并行处理模型,能够支持流处理和批处理,并兼容多个运行平台。Beam是一个开源的统一的编程模型,开发者可以使用Beam SDK来创建数据处理管道,然后,这些程序可以在任何支持的执行引擎上运行,比如运行在ApexSparkFlink、Cloud Dataflow上。Beam SDK定义了开发分布式数据处理任务业务逻辑的API接口,即提供一个统一的编程接口给到上层应用的开发者,开发者不需要了解底层的具体的大数据平台的开发接口是什么,直接通过Beam SDK的接口,就可以开发数据处理的加工流程,不管输入是用于批处理的有限数据集,还是用于流处理的无限数据集。对于有限或无限的输入数据,Beam SDK都使用相同的类来表现,并且使用相同的转换操作进行处理。
终端用户用Beam来实现自己所需的流计算功能,使用的终端语言可能是PythonJava等,Beam为每种语言提供了一个对应的SDK,用户可以使用相应的SDK创建数据处理管道,用户写出的程序可以被运行在各个Runner上,每个Runner都实现了从Beam管道到平台功能的映射。目前主流的大数据处理框架FlinkSparkApex以及谷歌的Cloud DataFlow等,都有了支持BeamRunner通过这种方式,Beam使用一套高层抽象的API屏蔽了多种计算引擎的区别,开发者只需要编写一套代码就可以运行在不同的计算引擎之上(比如ApexSparkFlink、Cloud Dataflow等)
【出处】林子雨.大数据技术原理与应用(第3版).人民邮电出版社,20211.

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|全数联人才测评中心 ( 京ICP备2024094898号 )

GMT+8, 2025-11-18 05:14 , Processed in 0.096616 second(s), 20 queries .

版权所有: 全数联人才测评(北京)中心

友情链接: 中华全国数字人才培育联盟 全数联人才测评中心学习平台 全数联人才测评中心存证平台 全数联人工智能专员认证中心

快速回复 返回顶部 返回列表