從原理到應用,從原理到應用從原理到應用本次演講的主題是谷歌云數(shù)據(jù)流:從概念到實踐。數(shù)據(jù)流的概念在2014年6月的谷歌I/O大會上首次與開發(fā)者見面。同年12月,谷歌首次公布了Dataflow的Java SDK及其源代碼。2015年3月初,Dataflow正式上線。作為云服務產(chǎn)品,DataFlow出現(xiàn)在Google Clo......
本次演講的主題是谷歌云數(shù)據(jù)流:從概念到實踐。
數(shù)據(jù)流的概念在2014年6月的谷歌I/O大會上首次與開發(fā)者見面。同年12月,谷歌首次公布了Dataflow的Java SDK及其源代碼。2015年3月初,Dataflow正式上線。作為云服務產(chǎn)品,DataFlow出現(xiàn)在Google Cloud產(chǎn)品線中,并提供了Alpha版本的試用應用。
在傳統(tǒng)的MapReduce大數(shù)據(jù)并行處理中,單個MapReduce節(jié)點無法滿足復雜的業(yè)務需求,因此大部分大數(shù)據(jù)處理都是通過MapReduce多節(jié)點流水線構(gòu)建的。這需要開發(fā)人員編寫額外的代碼來連接多個MapReduce節(jié)點,管理每個節(jié)點的狀態(tài)以及它們之間的數(shù)據(jù)傳輸,并維護一個大型的服務器集群。此外,大數(shù)據(jù)的實時計算也給MapReduce帶來了巨大的挑戰(zhàn)。這是谷歌開發(fā)數(shù)據(jù)流的初衷。作為Google Cloud的產(chǎn)品,Dataflow可以與App Engine、Compute Engine、Google Storage、Google Datastore、Google Cloud SQL云存儲服務相結(jié)合,快速構(gòu)建一個相對完整的實時大數(shù)據(jù)并行處理系統(tǒng)。數(shù)據(jù)流簡化了系統(tǒng)開發(fā)的過程。開發(fā)者使用SDK在本地進行開發(fā)、測試和調(diào)試,并將代碼提交給云服務進行測試,隨時運行。數(shù)據(jù)流會自動優(yōu)化用戶的流處理系統(tǒng),并將其分配到多個計算節(jié)點上并發(fā)執(zhí)行。
用戶開發(fā)的大數(shù)據(jù)系統(tǒng)可以從Google提供的各種存儲服務和Pub/Sub服務中讀取和處理數(shù)據(jù),然后寫入指定的存儲服務或Pub/Sub服務中。由于谷歌的存儲服務采用成熟的行業(yè)標準,用戶還可以將Hadoop、Spark等產(chǎn)品集成到Dataflow中。
底層數(shù)據(jù)依賴于兩種技術(shù):FlumeJava和MillWheel。類似于2003年MapReduce和BigTable的概念,谷歌研究院在2010年和2013年發(fā)表的兩篇論文分別介紹了FlumeJava和MillWheel。在此之前,這兩個項目在谷歌內(nèi)部都有一定程度的成功實踐。
FlumeJava發(fā)布后,很多媒體稱之為下一代MapReduce(個人覺得這個評價太高了)。FlumeJava是一個Java庫,為大數(shù)據(jù)的并行處理提供了更簡單的框架和工具,其底層算法模型是MapReduce。FlumeJava在更高層次上抽象了MapReduce管道的數(shù)據(jù)和流程,并提供了內(nèi)置的流程優(yōu)化策略。FlumeJava將數(shù)據(jù)模型抽象為PCollectionltTgt和PTableltk,Vgt兩個通用數(shù)據(jù)結(jié)構(gòu),其上定義了四個操作原語:parallelDo()、groupByKey()、combineValues()和flat()。同時在這四個操作原語的基礎(chǔ)上定義了count()、join()和top()等常用操作。與傳統(tǒng)MapReduce和專家優(yōu)化的MapReduce相比,F(xiàn)lumeJava在代碼行、方法和執(zhí)行時間上都優(yōu)于傳統(tǒng)MapReduce,與專家優(yōu)化的MapReduce不相上下。也說明了通過FlumeJava,普通開發(fā)者可以在更短的時間內(nèi)開發(fā)出一個專家MapReduce系統(tǒng)。
數(shù)據(jù)流的另一個底層技術(shù)是MillWheel,它提供了一個具有容錯機制的實時數(shù)據(jù)處理模型。根據(jù)谷歌研究院公布的論文,MillWheel是一個沒有提供可編程框架的模型和算法,所以目前我們沒有機會了解它的代碼級實現(xiàn)。原則上,MillWheel內(nèi)置了容錯機制,采用低水位線機制,避免網(wǎng)絡(luò)延遲等因素造成的數(shù)據(jù)流順序不一致。實時數(shù)據(jù)處理是近年來的一個熱點。市場上現(xiàn)有的產(chǎn)品包括Storm、Spark Streaming、雅虎S3、Samza等。與這四家的對比表明,MillWheel基本上是這幾款產(chǎn)品特性的集成。
了解FlumeJava和MillWheel的基本概念和原理,讓我們更容易理解數(shù)據(jù)流的運行機制和特點。Dataflow可以簡單的看作是兩者的融合,但是我相信Google花了很多精力來優(yōu)化兩者的融合以及整個Google Cloud產(chǎn)品線。
上圖是數(shù)據(jù)流的示例代碼,已經(jīng)開發(fā)了一個眾所周知的字數(shù)統(tǒng)計應用程序。從代碼中可以看出,編寫一個基于數(shù)據(jù)流的并發(fā)大數(shù)據(jù)處理流水線更加容易和簡單。Dataflow提供的SDK可以方便地將更改后的代碼提交給云服務執(zhí)行,并通過開發(fā)者控制臺進行監(jiān)控和管理。
總結(jié):Google Dataflow是為解決傳統(tǒng)MapReduce處理復雜業(yè)務流程的困難,滿足實時數(shù)據(jù)分析需求而開發(fā)的云服務。它為開發(fā)者提供了一個SDK、工具和云服務,用于快速開發(fā)、測試、調(diào)試、生產(chǎn)運營和監(jiān)控。它沒有創(chuàng)造性的理論或算法模型。因為是FlumeJava和MillWheel的集成,并且可以調(diào)用Google Cloud提供的存儲和Pub/Sub服務,所以可以在批處理和實時計算之間無縫切換。目前的缺陷是版本還不穩(wěn)定;谷歌云本身提供的服務相對較少;發(fā)布時間還短,沒有成功的商業(yè)案例。但谷歌作為直接開啟大數(shù)據(jù)潮流的先行者,其提供的大數(shù)據(jù)平臺仍然值得我們研究和探索。
版權(quán)聲明:本文為博主原創(chuàng)文章,遵循CC 4.0 BYSA版權(quán)協(xié)議。轉(zhuǎn)載請附上原出處和本聲明的鏈接。
本文鏈接:https://blog.csdn.net/weixin 45932629/文章/詳情/103315968
特別聲明:以上文章內(nèi)容僅代表作者本人觀點,不代表ESG跨境電商觀點或立場。如有關(guān)于作品內(nèi)容、版權(quán)或其它問題請于作品發(fā)表后的30日內(nèi)與ESG跨境電商聯(lián)系。
二維碼加載中...
使用微信掃一掃登錄
使用賬號密碼登錄
平臺顧問
微信掃一掃
馬上聯(lián)系在線顧問
小程序
ESG跨境小程序
手機入駐更便捷
返回頂部