40 | 大规模数据处理未来之路

今天要分享的内容是专栏的最后一讲。

相信通过整个专栏的系统学习,你已经掌握了大规模数据处理的基础概念与设计模式。同时,也相信,专栏中对现实世界中常见的大规模数据处理架构的深入探讨,可以在解决现实难题时为你提供一些思路。

但我更希望的是,通过模块六中对大规模数据处理在未来的应用与展望讲解,让你吃下一颗定心丸,那就是,大规模数据处理技术是在放眼未来的几十年中都依然会是炙手可热的一项技术,不会被淘汰。

你不难发现,在专栏的后半部分,花了不少的篇幅来专门介绍 Apache Beam 的各种概念、底层思想以及实际应用的。我个人是十分认同 Google 所推崇的 Dataflow Model 的计算模型,也相信未来 Apache Beam 的发展前景是很好的。

所以在专栏的最后一讲,想和你讲讲我对数据处理框架和对 Beam 的一些看法和展望。

技术迭代带来的烦恼

在专栏的后半部分,我们不断深入探讨了 Apache Beam。有同学曾经在留言中提过一个问题:“我已经掌握好 Spark 了,也觉得 Spark 的语法更简练,为什么还需要学习 Beam 呢?”

对于这个问题,相信在你刚刚接触 Beam 的时候,多多少少都会有相同的疑问。

我来给你举个例子,带你穿越时间,去看看一个常见的大规模数据处理框架在面临迁移时会遇到的烦恼。

在 2006 年,Hadoop 刚刚发布,在选择数据处理框架的时候,你的首选肯定是 Apache Hadoop。当时 Hadoop 在开源社区横空出世,让所有工程师们都可以利用这个框架来处理自己的数据,尤其是利用 Hadoop 自带的 MapReduce 计算模型,可以让整个数据处理的效率有质的飞跃。

而在 2009 年,Spark 这个计算框架在加州伯克利大学的 AMPLab 实验室中诞生。2010 年,Spark 正式开源了。“Spark 的数据处理效率远在 Hadoop 之上”的结论经过了业界的验证。2014 年,Spark 更是成为了 Apache 的顶级项目。

如果你是在这个时候进入 IT 行业的工程师,更加可能选择直接学习 Spark,而只会把少量时间放在 Hadoop 的学习上。在 2014 年进行创业的小公司同样可能也会直接使用 Spark 来进行底层数据处理基础设施的搭建。

那之前已经花了很多时间在搭建 Hadoop MapReduce 作为公司基础设施的公司,或者是已经很深入学习了 Hadoop 的工程师这个时候该怎么办呢?

一种做法是放弃现有的技术框架,重新花费大量时间去学习新的数据处理框架。这太累了。对于工程师来说,平时本来就有着做不完的任务和业绩压力,还需要抽空学习新的技术和进行代码的迁移,这无疑让工程师们有着非常大的压力和负担。

当然,还有一种做法是保持现有的技术框架,不断优化现有基础设施,并且寄希望于老框架可以有新的功能发布让其性能得以提高。

那我们再把时间往后推一点,到了 2014 年,也就是 Flink 项目刚刚面世的时候。这时候的互联网应用场景已经有了极大的变化,批处理加上流处理同时存在的状况常常遇见。而 Flink 除了在处理大规模数据有着极高效率之外,它的批流统一功能也恰恰是满足了这种批流处理同时存在的场景。

2018 年初,阿里巴巴更是看好 Flink 的前景,收购了 Apache Flink 背后的商业母公司——德国的 Data Artisans。

讲到这里,你不难发现,当有新的技术框架出现的时候,工程师就会陷入一个选择的困难,纠结到底是抛弃原有的技术架构,还是花大量时间去做技术迁移。

其实,如果一开始就有 Beam 模型存在的话,你可能就不必有这个烦恼了。

因为我们完全不需要担心某一个 Runner,也就是具体的数据处理技术框架过时之后所带来的技术迁移成本。如果你想要完成底层处理框架的迁移,只需要更改一些 Runner 的接口就可以了。

Apache Beam 能带来什么?

那么,我们来看看对应用它的工程师来说,Apache Beam 能带来什么?

因为 Apache Beam 是根据 Dataflow Model 倡导 API 的实现的,所以它完全能够胜任批流统一的任务。同时,因为 Apache Beam 有着中间的抽象转换层,工程师可以从 API 中解放出来,不需要学习新 Runner 的 API 语法。这也就是我说过多次的“编写一套程序就可以放在不同的 Runner 上面跑”。

除了对工程师来说能够极大地减少新技术学习的时间成本,Apache Beam 还能够推动大规模数据处理领域的最新技术发展。

从上面我所举的例子中你可以看到,在一项新技术从诞生到流行的过程中,可能会有很多公司因为技术迁移成本太大而选择放弃采用最新的技术,这其实还影响了新技术的传播使用。因为当一部分工程师选择留守原本技术框架的时候,新技术框架也就相应地缺少了这部分的用户群体。

那我们来想象一下,如果所有的工程师都在使用 Beam 来进行项目编写的话会有什么样的效果。

因为有了 Beam 的抽象层,你可以非常轻松地更换不同的底层 Runner。这就意味着我们可以先选择一个处理数据效率最高的一个 RunnerA。如果有其他的 Runner 优化了自身,比如 RunnerB,从而拥有更高效率的时候,工程师们又可以将底层 Runner 换成 RunnerB。

这些 Runner 其实就是大数据处理框架的本身,像 Spark、Apex、Storm、Flink 这些数据处理架构。这对整个技术行业都可以起到一种良性的竞争。如果 Runner 要想争取更多用户的话,就必须努力提升自身数据处理的效率来让用户选择自己。

做底层数据处理框架的工程师则可以专心优化自身的效率和增加自身的功能,而不必担心迁移。

且 Apache Beam 还有着自己的社区。所以,在实际工程中如果遇到一些特别的、没有在官方文档中解释的问题,你就可以到社区去求助了。有了社区交流之后,全世界的工程师们都可以对自己的工程提出问题,解决问题,实现解决问题的思路。

Beam Runner 功能的迭代速度

最后你可能会问,Apache Beam 的一些功能现在还没有,那还是先观望观望吧。那我来以 Flink 支持整个 Dataflow 的功能来告诉你 Beam Runner 功能的迭代速度有多快。

Kostas Tzoumas(Data Artisans 的联合创始人以及 Flink 的作者)在 Beam 出现的时候就表达过自己的看法,他坚信 Beam Model 是批流数据处理的正确编程模型。所以,在 Dataflow Model 论文发布之初,他们就根据 Dataflow Model 的思想重写了 Flink 的 0.10 版本的 DataStream API。

这整个过程花费了多少时间呢?

在 2014 年的 12 月,Google 正式发布 Google Cloud Dataflow SDK。在 2015 年的 1 月,Data Artisans 紧随 Google 的脚步,根据 Dataflow Model 的概念,开始了 DataStream API 的重写工作。

在 2015 年 3 月,Flink 已经可以对批处理进行支持了。到了 2015 年的 12 月,Flink 可以支持设置窗口和水印的流处理。其实这个时候 DataStream API 已经很接近 Dataflow Model 的概念了。所以在 2016 年 3 月,Data Artisans 正式开始在 Apache Beam 的 Runner 代码库中贡献 Flink 的 Runner 代码。

在 2016 年 5 月的时候,Flink 对批处理也支持了窗口的概念,同时也对整个批处理完成了集成测试(Integration Test)。在 2016 年 8 月,Flink 完成了对流处理的集成测试。自此,Flink DataStream API 宣告完成了对 Dataflow Model 的支持。

小结

今天,阐述了对于 Beam 的一些看法,同时也希望借助所举出的一些例子,能够让你明白 Beam 对于未来数据处理发展的重要性。



本文总结了大规模数据处理实战专栏的最后一讲,重点介绍了Apache Beam的应用与展望。作者首先讨论了技术迭代带来的烦恼,指出工程师在面临新技术框架出现时常常陷入选择困难,需要权衡是否放弃现有技术框架进行迁移。然后,作者详细介绍了Apache Beam的优势,包括其能够胜任批流统一任务、减少新技术学习时间成本、推动大规模数据处理领域的最新技术发展等。此外,作者还强调了Beam Runner功能的迭代速度,以Flink支持整个Dataflow的功能为例,展示了Beam Runner功能的快速迭代。

本文通过对Apache Beam的优势和发展前景进行详细阐述,为读者提供了对大规模数据处理未来发展方向的重要性的深刻认识。同时,通过实例展示了Beam Runner功能的迭代速度,为读者提供了对Apache Beam的技术特点的全面了解。 

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值