基于Apache Beam的大数据实验教学方案的设计
2019-03-14申海杰田新志陈晓范
申海杰 田新志 陈晓范
摘要:為提供具有前沿性的计算机课程实验,针对新一代大数据技术,设计并实现了基于Apache Beam的大数据实验教学方案。该方案在可以使学生们清楚地了解 Beam 的运用原理。
关键词:大数据;Apache Beam;实验教学
中图分类号:G424 文献标识码:A 文章编号:1009-3044(2019)01-0158-02
1 引言
随着大数据 2.0 时代悄然到来,大数据从简单的批处理扩展到了实时处理、流处理、交互式查询和机器学习应用。早期的处理模型 (Map/Reduce) 早已经力不从心,而且也很难应用到处理流程长且复杂的数据流水线上。面对这种情况,Google 在 2017 年 5 月2发布了其开源大数据流水线产品Apache Beam的第一个稳定版本 2.0.0[1]。
Apache Beam是一个开源的统一的编程模型,我们可以使用它来创建数据处理管道。Beam对于尴尬并行数据处理任务特别有用,其中问题可以被分解为可以独立和并行处理的许多较小的数据束[2]。
2 实验方案
为了让学生有效地了解和掌握Beam的运行原理,我们精心设计了实验方案,精简地说明如下。
本实验方案通过在选定一个的 runner 上运行一个由 Beam 的 Java SDK 编写的 WordCount 示例,演示Beam 的运用原理。
第一步是搭建一个管道(Pipeline)。
第二步是让管道有一个处理框架,也就是Runtimes 。
第三步也是 Beam 最后一个重要的地方,就是模型 (Model),通俗点讲就是我们的数据来源。
最后一步是处理结果,实验者可以根据自己的需求处理。
2.1 配置开发环境
第一步 ,从网上下载并安装 Java Development Kit (JDK) 1.7 或更高版本。并配置 JAVA_HOME 环境变量,确认已经设置并指向 JDK 安装目录。如图1所示。
第二步,按照 Maven 的 安装指南 下载并安装适合JDK所在的操作系统的 Apache Maven 。这个步骤,安装的界面较多,这里就不赘述了。
2.2 实验代码
获得一份 WordCount 管线代码拷贝最简单的方法,就是使用下列指令来生成一个简单的、包含基于 Beam 最新版的 WordCount 示例和构建的 Maven 项目,操作指令如图2所示。
2.3 运行实例
一个单 Beam 管线可以运行于多种 Beam runner 上,包括 ApexRunner、FlinkRunner、SparkRunner 或 DataflowRunner 等[3]。
用 --runner=<runner> 选项指定选定的 runner (缺省为 DirectRunner)
运行WordCount 管线。
2.4 实验结果
管线完成运行的结果会发现生成多个以 count 打头的输出文件。具体会有几个这样的文件是由 runner 决定的。这样能方便 runner 进行高效的分布式执行。当查看文件内容的时候,会看到里面包含每个单词的出现数量。文件中的元素顺序可能会和这里看到的不同。因为 Beam 模型通常并不保障顺序,以便于 runner 优化效率[4]。
3 结束语
通过以上实验可以看到,利用 Beam 的模型,不需要编写复杂的逻辑,就可以灵活地/优雅地处理流处理计算过程中出现的一些棘手场景。Apache Beam 是集成了很多数据模型的一个统一化平台,它为大数据开发人员频繁换数据源或多数据源、多计算框架提供了集成统一框架平台。
参考文献:
[1] Apache Beam Team. Apache Beam Quickstart.[EB/OL].(2017-3-21). https://beam.apache.org/get-started/quickstart-java/
[2] Apache Beam实战指南之基础入门[EB/OL].(2017-10-9). https://juejin.im/entry/59db31806fb9a00a53279ca6
[3] Google 大数据引擎 Apache Beam Java SDK 快速入门[EB/OL].(2017-1-23). https://www.jianshu.com/p/283a8c8edef7
[4] Beam从零开始.[EB/OL].(2017-1-19). https://blog.csdn.net/qq_23660243/article/details/54614167