从原理到应用,从原理到应用从原理到应用本次演讲的主题是谷歌云数据流:从概念到实践。数据流的概念在2014年6月的谷歌I/O大会上首次与开发者见面。同年12月,谷歌首次公布了Dataflow的Java SDK及其源代码。2015年3月初,Dataflow正式上线。作为云服务产品,DataFlow出现在Google Clo......
本次演讲的主题是谷歌云数据流:从概念到实践。
数据流的概念在2014年6月的谷歌I/O大会上首次与开发者见面。同年12月,谷歌首次公布了Dataflow的Java SDK及其源代码。2015年3月初,Dataflow正式上线。作为云服务产品,DataFlow出现在Google Cloud产品线中,并提供了Alpha版本的试用应用。
在传统的MapReduce大数据并行处理中,单个MapReduce节点无法满足复杂的业务需求,因此大部分大数据处理都是通过MapReduce多节点流水线构建的。这需要开发人员编写额外的代码来连接多个MapReduce节点,管理每个节点的状态以及它们之间的数据传输,并维护一个大型的服务器集群。此外,大数据的实时计算也给MapReduce带来了巨大的挑战。这是谷歌开发数据流的初衷。作为Google Cloud的产品,Dataflow可以与App Engine、Compute Engine、Google Storage、Google Datastore、Google Cloud SQL云存储服务相结合,快速构建一个相对完整的实时大数据并行处理系统。数据流简化了系统开发的过程。开发者使用SDK在本地进行开发、测试和调试,并将代码提交给云服务进行测试,随时运行。数据流会自动优化用户的流处理系统,并将其分配到多个计算节点上并发执行。
用户开发的大数据系统可以从Google提供的各种存储服务和Pub/Sub服务中读取和处理数据,然后写入指定的存储服务或Pub/Sub服务中。由于谷歌的存储服务采用成熟的行业标准,用户还可以将Hadoop、Spark等产品集成到Dataflow中。
底层数据依赖于两种技术:FlumeJava和MillWheel。类似于2003年MapReduce和BigTable的概念,谷歌研究院在2010年和2013年发表的两篇论文分别介绍了FlumeJava和MillWheel。在此之前,这两个项目在谷歌内部都有一定程度的成功实践。
FlumeJava发布后,很多媒体称之为下一代MapReduce(个人觉得这个评价太高了)。FlumeJava是一个Java库,为大数据的并行处理提供了更简单的框架和工具,其底层算法模型是MapReduce。FlumeJava在更高层次上抽象了MapReduce管道的数据和流程,并提供了内置的流程优化策略。FlumeJava将数据模型抽象为PCollectionltTgt和PTableltk,Vgt两个通用数据结构,其上定义了四个操作原语:parallelDo()、groupByKey()、combineValues()和flat()。同时在这四个操作原语的基础上定义了count()、join()和top()等常用操作。与传统MapReduce和专家优化的MapReduce相比,FlumeJava在代码行、方法和执行时间上都优于传统MapReduce,与专家优化的MapReduce不相上下。也说明了通过FlumeJava,普通开发者可以在更短的时间内开发出一个专家MapReduce系统。
数据流的另一个底层技术是MillWheel,它提供了一个具有容错机制的实时数据处理模型。根据谷歌研究院公布的论文,MillWheel是一个没有提供可编程框架的模型和算法,所以目前我们没有机会了解它的代码级实现。原则上,MillWheel内置了容错机制,采用低水位线机制,避免网络延迟等因素造成的数据流顺序不一致。实时数据处理是近年来的一个热点。市场上现有的产品包括Storm、Spark Streaming、雅虎S3、Samza等。与这四家的对比表明,MillWheel基本上是这几款产品特性的集成。
了解FlumeJava和MillWheel的基本概念和原理,让我们更容易理解数据流的运行机制和特点。Dataflow可以简单的看作是两者的融合,但是我相信Google花了很多精力来优化两者的融合以及整个Google Cloud产品线。
上图是数据流的示例代码,已经开发了一个众所周知的字数统计应用程序。从代码中可以看出,编写一个基于数据流的并发大数据处理流水线更加容易和简单。Dataflow提供的SDK可以方便地将更改后的代码提交给云服务执行,并通过开发者控制台进行监控和管理。
总结:Google Dataflow是为解决传统MapReduce处理复杂业务流程的困难,满足实时数据分析需求而开发的云服务。它为开发者提供了一个SDK、工具和云服务,用于快速开发、测试、调试、生产运营和监控。它没有创造性的理论或算法模型。因为是FlumeJava和MillWheel的集成,并且可以调用Google Cloud提供的存储和Pub/Sub服务,所以可以在批处理和实时计算之间无缝切换。目前的缺陷是版本还不稳定;谷歌云本身提供的服务相对较少;发布时间还短,没有成功的商业案例。但谷歌作为直接开启大数据潮流的先行者,其提供的大数据平台仍然值得我们研究和探索。
版权声明:本文为博主原创文章,遵循CC 4.0 BYSA版权协议。转载请附上原出处和本声明的链接。
本文链接:https://blog.csdn.net/weixin 45932629/文章/详情/103315968
特别声明:以上文章内容仅代表作者本人观点,不代表ESG跨境电商观点或立场。如有关于作品内容、版权或其它问题请于作品发表后的30日内与ESG跨境电商联系。
二维码加载中...
使用微信扫一扫登录
使用账号密码登录
平台顾问
微信扫一扫
马上联系在线顾问
小程序
ESG跨境小程序
手机入驻更便捷
返回顶部