Apache Beam实战指南之基础入门

前言:大数据 2.0 时代不期而至

随着大数据 2.0 时代悄然到来,大数据从简单的批处理扩展到了实时处理、流处理、交互式查询和机器学习应用。早期的处理模型 (Map/Reduce) 早已经力不从心,而且也很难应用到处理流程长且复杂的数据流水线上。另外,近年来涌现出诸多大数据应用组件,如 HBase、Hive、Kafka、Spark、Flink 等。开发者经常要用到不同的技术、框架、API、开发语言和 SDK 来应对复杂应用的开发。这大大增加了选择合适工具和框架的难度,开发者想要将所有的大数据组件熟练运用几乎是一项不可能完成的任务。

面对这种情况,Google 在 2016 年 2 月宣布将大数据流水线产品(Google DataFlow)贡献给 Apache 基金会孵化,2017 年 1 月 Apache 对外宣布开源 Apache Beam,2017 年 5 月迎来了它的第一个稳定版本 2.0.0。在国内,大部分开发者对于 Beam 还缺乏了解,社区中文资料也比较少。InfoQ 期望通过 Apache Beam 实战指南系列文章 推动 Apache Beam 在国内的普及。

本文将简要介绍 Apache Beam 的发展历史、应用场景、模型和运行流程、SDKs 和 Beam 的应用示例。欢迎加入 Beam 中文社区深入讨论和交流。

概述

大数据处理领域的一大问题是:开发者经常要用到很多不同的技术、框架、API、开发语言和 SDK。取决于需要完成的是什么任务,以及在什么情况下进行,开发者很可能会用 MapReduce 进行批处理,用 Apache Spark SQL 进行交互请求(interactive queries),用 Apache Flink 进行实时流处理,还有可能用到基于云端的机器学习框架。

近两年涌现的开源大潮,为大数据开发者提供了十分富余的工具。但这同时也增加了开发者选择合适工具的难度,尤其对于新入行的开发者来说。这很可能拖慢、甚至阻碍开源工具的发展:把各种开源框架、工具、库、平台人工整合到一起所需工作之复杂,是大数据开发者常有的抱怨之一,也是他们支持专有大数据平台的首要原因。

Apache Beam 发展历史

Beam 在 2016 年 2 月成为 Apache 孵化器项目,并在 2016 年 12 月升级成为 Apache 基金会的顶级项目。通过十五个月的努力,一个稍显混乱的代码库,从多个组织合并,已发展成为数据处理的通用引擎,集成多个处理数据框架,可以做到跨环境。

Beam 经过三个孵化器版本和三个后孵化器版本的演化和改进,最终在 2017 年 5 月 17 日迎来了它的第一个稳定版 2.0.0。发布稳定版本 3 个月以来,Apache Beam 已经出现明显的增长,无论是通过官方还是社区的贡献数量。Apache Beam 在谷歌云方面也已经展示出了“才干”。

Beam 2.0.0 改进了用户体验,重点在于框架跨环境的无缝移植能力,这些执行环境包括执行引擎、操作系统、本地集群、云端以及数据存储系统。Beam 的其他特性还包括如下几点:

网上已经有很多人写过 Beam 2.0.0 版本之前的资料,但是 2.0.0 版本后 API 很多写法变动较大,本文将带着大家从零基础到 Apache Beam 入门。

Apache Beam 应用场景

Google Cloud、PayPal、Talend 等公司都在使用 Beam,国内包括阿里巴巴、百度、金山、苏宁、九次方大数据、360、慧聚数通信息技术有限公司等也在使用 Beam,同时还有一些大数据公司的架构师或研发人员正在一起进行研究。Apache Beam 中文社区正在集成一些工作中的 runners 和 sdk IO,包括人工智能、机器学习和时序数据库等一些功能。

以下为应用场景的几个例子:

Beam 可以用于 ETL Job 任务

Beam 的数据可以通过 SDKs 的 IO 接入,通过管道可以用后面的 Runners 做清洗。

Beam 数据仓库快速切换、跨仓库

由于 Beam 的数据源是多样 IO,所以用 Beam 可以快速切换任何数据仓库。

Beam 计算处理平台切换、跨平台

Runners 目前提供了 3-4 种可以切换的平台,随着 Beam 的强大应该会有更多的平台提供给大家使用。

Apache Beam 运行流程

Apache Beam实战指南之基础入门

4-1 数据处理流程

如图 4-1 所示,Apache Beam 大体运行流程分成三大部分:

Modes

Modes 是 Beam 的模型或叫数据来源的 IO,它是由多种数据源或仓库的 IO 组成,数据源支持批处理和流处理。

Pipeline

Pipeline 是 Beam 的管道,所有的批处理或流处理都要通过这个管道把数据传输到后端的计算平台。这个管道现在是唯一的。数据源可以切换多种,计算平台或处理平台也支持多种。需要注意的是,管道只有一条,它的作用是连接数据和 Runtimes 平台。

Runtimes

Runtimes 是大数据计算或处理平台,目前支持 Apache Flink、Apache Spark、Direct Pipeline 和 Google Clound Dataflow 四种。其中 Apache Flink 和 Apache Spark 同时支持本地和云端。Direct Pipeline 仅支持本地,Google Clound Dataflow 仅支持云端。除此之外,后期 Beam 国外研发团队还会集成其他大数据计算平台。由于谷歌未进入中国,目前国内开发人员在工作中对谷歌云的使用应该不是很多,主要以前两种为主。为了使读者读完文章后能快速学习且更贴近实际工作环境,后续文章中我会以前两种作为大数据计算或处理平台进行演示。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/8bd8930db7a8ea133d75497504e51f47.html