從原理到應用,從原理到應用從原理到應用本次演講的主題是谷歌云數據流:從概念到實踐。數據流的概念在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跨境小程序
手機入駐更便捷
返回頂部