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