數(shù)據(jù)價值比數(shù)據(jù)本身更值得關(guān)注,好的工具是業(yè)務的加速器。如何圍繞整個數(shù)據(jù)的生命周期,通過數(shù)據(jù)工具最快最準拿到我們想要的信息?這篇文章也許可以提供一些幫助。本篇文章來自于2019 Arch Summit全球架構(gòu)師峰會,Google Cloud數(shù)據(jù)分析客戶工程師Shirley Wang以及木瓜移動數(shù)據(jù)工程師Bin Wang的分享,解析Google Cloud數(shù)據(jù)分析平臺特點和木瓜移動在GCP(Google Cloud Platform)上的實踐。
Google 1999年成立,到2003年開始處理的數(shù)據(jù)規(guī)模已達到600億條,大數(shù)據(jù)已經(jīng)不是新的話題,今天,我們更關(guān)注數(shù)據(jù)價值而不是數(shù)據(jù)本身。
“整合全世界的信息,讓它在全球可達,并且有用?!边@是Google成立之初的使命,也是多年來的努力踐行。當我們通過工具去做數(shù)據(jù)查詢和分析時,希望了解其背后代表的信息,甚至從中做商業(yè)決定。
Google在大數(shù)據(jù)領(lǐng)域的10年探索
2012年以前,如果想用Google大數(shù)據(jù)領(lǐng)域的技術(shù),更多是閱讀Google的論文,或者到Apache社區(qū)去下載這些開源的項目。2012年Google Cloud Platform平臺推出后,在GCP上就可以更便捷地使用這些數(shù)據(jù)服務。
2004年,Google發(fā)表了一篇論文《MapReduce:Simplified Data Processing on Large Clusters》,提出了MapReduce框架,MapReduce涉及分解一系列簡單的Map和Reduce任務中的所有復雜操作,被用于解決大規(guī)模計算問題,這個階段中更關(guān)注的是把大批量數(shù)據(jù)分而治之,輸入的數(shù)據(jù)集被切分成獨立的塊,但是它也有難以實現(xiàn)實時流式計算等缺點。
2006年,雅虎員工發(fā)布了Apache Hadoop開源項目,MapReduce是其重要的組件,Hadoop允許開發(fā)人員構(gòu)建大規(guī)模MapReduce作業(yè),可以在大型商用機器集群中執(zhí)行,并且具有極強的彈性和可靠性,但是仍然有作業(yè)優(yōu)化、調(diào)度、可寫性等問題,Hadoop MapReduce作業(yè)略顯笨拙。
2010年,Google研究員撰寫了一篇名為《FlumeJava:Easy,Efficient Data-Parallel Pipelines》的論文,F(xiàn)lumeJava出現(xiàn),引入了一個框架用于組織、執(zhí)行和調(diào)試大規(guī)模的MapReduce作業(yè)管道,可以去管理MapReduce未管理到的問題,比如掉隊者的問題,優(yōu)化執(zhí)行計劃,使失敗的作業(yè)易于回滾而不是從頭開始,從而大大減少了MapReduce管道的執(zhí)行時間。
但是在現(xiàn)實業(yè)務中我們發(fā)現(xiàn)批量數(shù)據(jù)處理并不能完全滿足業(yè)務需求,我們希望能實時了解數(shù)據(jù)并且把它們納入到統(tǒng)計中,這時出現(xiàn)了Millwheel,實現(xiàn)處理實時數(shù)據(jù),一直發(fā)展到今天在GCP上的工具Dataflow集成了Flume、Millwheel等內(nèi)部技術(shù),實現(xiàn)同時用一套代碼解決數(shù)據(jù)實時和批量問題。
從論文到開源項目到平臺工具,Google所提供的服務一直遵循著如何讓客戶使用時更方便,更簡單,其背后的技術(shù)是復雜的,但是需要保證使用上是簡單的,GCP數(shù)據(jù)分析平臺希望能夠讓使用者更多的關(guān)注分析和洞察,其他如計算資源、存儲、數(shù)據(jù)何時做分區(qū)……這些都是GCP需要考慮的事。
GCP數(shù)據(jù)分析平臺助力業(yè)務提升
Google在大數(shù)據(jù)領(lǐng)域成果頗豐,開放在GCP數(shù)據(jù)分析平臺上,為企業(yè)提供完整數(shù)據(jù)生命周期的管理,包括規(guī)?;瘮?shù)據(jù)注入、數(shù)據(jù)遷移過程中的處理、數(shù)據(jù)計算和存儲、到最后的高級分析預測、數(shù)據(jù)展示等。
在整個分享中,Shirley重點分享了3款工具產(chǎn)品:
數(shù)據(jù)注入-Cloud Pub/Sub
流式和批量數(shù)據(jù)處理-Cloud Dataflow
數(shù)據(jù)分析-BigQuery
Pub/Sub幫助連接應用與服務之間的實時消息
在數(shù)據(jù)注入的時候,往往會遇到數(shù)據(jù)被重復發(fā)送,出現(xiàn)數(shù)據(jù)延遲,或者發(fā)布者和接收者其中一方出了問題等這些異常情況,我們可能會選擇恢復數(shù)據(jù)或者刪除處理等方式。而實際上Google的Pub/Sub為解決這樣的情況提供了很多選擇。
Google Cloud Pub/Sub是Open API,是一個全托管、無運維、全球性的服務,對于對網(wǎng)絡連接重度依賴的應用,Pub/Sub可以依托Google的全球網(wǎng)絡,提供實時可靠的服務間消息聊天服務。在GCP平臺創(chuàng)建一個Pub/Sub實例的時候,用戶得到的入口是一個全球都可達的邊緣節(jié)點,不用在每個區(qū)域都設(shè)計流式處理的入口,使得Pub/Sub適用于服務全球的業(yè)務。Google稱其已在Snapchat以及Hangouts應用中支持這項技術(shù)。
消息的生命周期機制是Pub/Sub里面重要的概念,消息的消費機制,其實就是從發(fā)布者到接收者,需要一個介質(zhì)幫助傳遞信息和管理信息,以便我們想拿到的時候就能拿到,在Pub/Sub里,這個能力就叫做訂閱(Subscription),只有當用戶確認接收到消息的時候,這個消息才在訂閱里消失。
Pub/Sub可以設(shè)置deadline區(qū)間,從最低10s到最高600s,如果在deadline之前沒有收到ACK(確認字符),消息將被重新送入隊列。如果在所設(shè)置的區(qū)間內(nèi),接收者都沒有明確收到消息,消息將最多保存7天。
Dataflow保證流式和批量數(shù)據(jù)處理
在消息隊列里面,保證消息順序一直都是難題,比如游戲玩家突然斷網(wǎng),或者在網(wǎng)絡傳輸?shù)倪^程中,后發(fā)生的事件可能先傳送到了,這是Dataflow可以解決的問題。
Dataflow可以保證消息能夠及時準確按順序進入系統(tǒng),進入后對于數(shù)據(jù)做一定層面的聚合、去重或者數(shù)據(jù)質(zhì)量檢查、數(shù)據(jù)清洗等等ETL的工作,這里面不僅僅是流式數(shù)據(jù),也包含批量數(shù)據(jù)。數(shù)據(jù)在進入分析系統(tǒng)之前,Dataflow其實就是完成預處理的工作。
Dataflow擁有以下幾個特點全托管與自動配置自動圖形優(yōu)化以獲得最佳執(zhí)行路徑自動縮放-在Pipeline啟動中間,動態(tài)調(diào)整每一個stage應該分配多少個workernode動態(tài)工作平衡
BigQuery數(shù)據(jù)倉庫提供強大的查詢和存儲服務
BigQuery是企業(yè)級的數(shù)據(jù)倉庫,默認加密,從GB到TB級的存儲都是秒級交互式查詢,不管數(shù)據(jù)量多大,比如提交一個Job,可以隨時去看Job有沒有執(zhí)行完,是不是把結(jié)果放在了制定目標上。
BigQuery有以下特點:
無服務器,全托管
支持實時流數(shù)據(jù)——即使BigQuery沒有搭配Dataflow、Pub/Sub,仍然可以通過Google提供的API把實時數(shù)據(jù)放在倉庫
內(nèi)嵌Machine Learning功能,在BigQuery可以通過SQL建模
基于內(nèi)存數(shù)據(jù)庫BI Engine加速報表生成——對于復雜大數(shù)據(jù)查詢情況下,是超高效的存儲介質(zhì)
BigQuery架構(gòu)同時BigQuery架構(gòu)是一個計算存儲分離的結(jié)構(gòu)。計算和存儲的分離帶來諸多好處,比如自動擴展,在復雜查詢場景下,當計算復雜,而涉及的數(shù)據(jù)并不多的時候,就分配更多的計算資源,當數(shù)據(jù)量特別大,但是計算相對簡單,甚至沒有任何計算只是把數(shù)據(jù)收集起來反饋給用戶的時候,就擴展更多的存儲資源。
而Google強大的網(wǎng)絡支撐,保證計算和存儲能夠協(xié)同工作,保證兩種資源分開后他們的交流也是非常高效,快速的。
BigQuery在木瓜移動的應用
木瓜移動專注于服務國內(nèi)企業(yè)出海,業(yè)務覆蓋游戲、應用、電商等行業(yè),數(shù)據(jù)服務上有很多Google Cloud數(shù)據(jù)產(chǎn)品應用經(jīng)驗,木瓜移動數(shù)據(jù)工程師Bin Wang主要分享了兩個案例。
游戲數(shù)據(jù)分析系統(tǒng)項目
木瓜移動游戲項目正在計劃遷到GCP,目前還沒有把數(shù)據(jù)全部放到GCP進行存儲和使用。但是在整個數(shù)據(jù)處理流程中有非常豐富的數(shù)據(jù)連接器,可以直接把數(shù)據(jù)放到BigQuery里面,在BigQuery里經(jīng)過Dataproc或者其他的工具進行清洗之后,直接把數(shù)據(jù)提供給一線的產(chǎn)品運營或者產(chǎn)品經(jīng)理,借助Data Studio探索更深的價值。
Data Studio這一工具可以幫助產(chǎn)品運營更好地產(chǎn)出分析報告,除了把數(shù)據(jù)放到BigQuery之前需要一些技術(shù)支持,在后面的分析完全不需要技術(shù),產(chǎn)品和運營人員隨時可以拿到數(shù)據(jù)進行探索,在業(yè)務操作上非常方便。
機器學習項目
對于機器學習項目來說,了解數(shù)據(jù)、分析數(shù)據(jù)是非常重要的,它是算法準確性的根基,將機器學習的項目放到GCP上,給了木瓜移動很多驚喜。首先數(shù)據(jù)收集到BigQuery,在數(shù)據(jù)分析和處理的時候,GCP提供了很多的工具,幫助算法工程師和分析工程師簡單快速地了解數(shù)據(jù),并且把分析過程記錄下來,可以進行重放,定期調(diào)度。
在機器學習項目中,做模型或者是進行訓練之前,往往要做很多特征計算的工作,包括數(shù)據(jù)特征的處理和選擇,將原始數(shù)據(jù)變成數(shù)據(jù)特征。
Bin Wang提到“之前我們的一些經(jīng)驗就是利用Spark加速計算過程,一般算法工程師把代碼寫好,再由專門開發(fā)的工程師對代碼進行優(yōu)化,跑在Spark上,如果出錯就得從頭來過,花費特別多的時間?,F(xiàn)在所有數(shù)據(jù)在BigQuery上,而BigQuery本身內(nèi)嵌Machine Learning功能,在BigQuery通過SQL建模,算法工程師寫出來的SQL就是工程可以利用的SQL,再進行后續(xù)數(shù)據(jù)輸出?!?/span>
在數(shù)據(jù)分析處理階段,還用到了Google Cloud Dataprep,在界面中每執(zhí)行一項操作,Dataprep都會自動建議和預測接下來最合適的數(shù)據(jù)轉(zhuǎn)換操作。用戶定義好轉(zhuǎn)換序列后,Dataprep會在后臺使用Dataflow來轉(zhuǎn)換數(shù)據(jù)。
使用GCP的數(shù)據(jù)分析平臺,分析開發(fā)周期縮短3倍,查詢處理速度提升10倍,木瓜移動項目進度也實現(xiàn)大幅度提高。
分享嘉賓
Shirley Wang,現(xiàn)擔任GCP數(shù)據(jù)分析客戶工程師,有豐富的云平臺架構(gòu)設(shè)計經(jīng)驗,目前的主要工作是幫助客戶設(shè)計規(guī)劃數(shù)據(jù)分析平臺架構(gòu)、并解決數(shù)據(jù)分析項目中的技術(shù)問題。她本人也對數(shù)據(jù)分析和機器學習有濃厚的興趣,熱衷于動手實踐各種技術(shù),是一個技術(shù)派。
Bin Wang,木瓜移動數(shù)據(jù)工程師,工作在數(shù)據(jù)分析和機器學習的第一線,有極強的動手能力,對各大云廠商產(chǎn)品都有所了解,并親手在GCP平臺搭建了木瓜移動的數(shù)據(jù)分析系統(tǒng)。