淘寶、美團(tuán)、滴滴分別如何搭建大數(shù)據(jù)平臺(tái)?
接著我們來(lái)看一下淘寶、美團(tuán)和滴滴的大數(shù)據(jù)平臺(tái),一方面進(jìn)一步學(xué)習(xí)大廠大數(shù)據(jù)平臺(tái)的架構(gòu),另一方面也學(xué)習(xí)大廠的工程師如何畫(huà)架構(gòu)圖。通過(guò)大廠的這些架構(gòu)圖,就會(huì)發(fā)現(xiàn),不但這些知名大廠的大數(shù)據(jù)平臺(tái)設(shè)計(jì)方案大同小異,架構(gòu)圖的畫(huà)法也有套路。淘寶大數(shù)據(jù)平臺(tái)淘寶可能是中國(guó)互聯(lián)網(wǎng)業(yè)界較早搭建了自己大數(shù)據(jù)平臺(tái)的公司,圖5.7是淘寶早期的Hadoop大數(shù)據(jù)平臺(tái),比較典型。
淘寶的大數(shù)據(jù)平臺(tái)基本分成三部分,上面是數(shù)據(jù)源與數(shù)據(jù)同步模塊;中間是云梯1,即淘寶的Hadoop大數(shù)據(jù)集群;下面是大數(shù)據(jù)的應(yīng)用,即使用大數(shù)據(jù)集群的計(jì)算結(jié)果。
數(shù)據(jù)源主要來(lái)自O(shè)racle和MySQL的備庫(kù),以及日志系統(tǒng)和爬蟲(chóng)系統(tǒng),這些數(shù)據(jù)通過(guò)數(shù)據(jù)同步網(wǎng)關(guān)服務(wù)器導(dǎo)入Hadoop集群。其中DataExchange非實(shí)時(shí)全量同步數(shù)據(jù)庫(kù)數(shù)據(jù),DBSync實(shí)時(shí)同步數(shù)據(jù)庫(kù)增量數(shù)據(jù),TimeTunnel實(shí)時(shí)同步日志和爬蟲(chóng)數(shù)據(jù)。數(shù)據(jù)全部寫(xiě)入HDFS。在Hadoop中的計(jì)算任務(wù)會(huì)通過(guò)天網(wǎng)調(diào)度系統(tǒng),根據(jù)集群資源和作業(yè)優(yōu)先級(jí),調(diào)度作業(yè)的提交和執(zhí)行。計(jì)算結(jié)果寫(xiě)入HDFS,再經(jīng)過(guò)DataExchange同步到MySQL和Oracle數(shù)據(jù)庫(kù)。處于平臺(tái)下方的數(shù)據(jù)魔方、推薦系統(tǒng)等從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù),就可以實(shí)時(shí)響應(yīng)用戶(hù)的操作請(qǐng)求。淘寶大數(shù)據(jù)平臺(tái)的核心是位于架構(gòu)圖左側(cè)的天網(wǎng)調(diào)度系統(tǒng),提交到Hadoop集群上的任務(wù)需要按序、按優(yōu)先級(jí)調(diào)度執(zhí)行,Hadoop集群上已經(jīng)定義好的任務(wù)也需要調(diào)度執(zhí)行,何時(shí)從數(shù)據(jù)庫(kù)、日志、爬蟲(chóng)系統(tǒng)導(dǎo)入數(shù)據(jù)也需要調(diào)度執(zhí)行,何時(shí)將Hadoop執(zhí)行結(jié)果導(dǎo)出到應(yīng)用系統(tǒng)的數(shù)據(jù)庫(kù),仍然需要調(diào)度執(zhí)行。可以說(shuō),整個(gè)大數(shù)據(jù)平臺(tái)都是在天網(wǎng)調(diào)度系統(tǒng)的統(tǒng)一規(guī)劃和安排下運(yùn)作的,如圖5.8所示。
DBSync、TimeTunnel、DataExchange這些數(shù)據(jù)同步組件也是淘寶內(nèi)部開(kāi)發(fā)的,可以針對(duì)不同的數(shù)據(jù)源和同步需求導(dǎo)入、導(dǎo)出數(shù)據(jù)。這些組件淘寶大多已經(jīng)開(kāi)源,我們可以參考使用。美團(tuán)大數(shù)據(jù)平臺(tái)美團(tuán)大數(shù)據(jù)平臺(tái)的數(shù)據(jù)源來(lái)自MySQL數(shù)據(jù)庫(kù)和日志,數(shù)據(jù)庫(kù)通過(guò)Canal獲得MySQL的binlog,輸出給消息隊(duì)列Kafka,日志通過(guò)Flume輸出到Kafka,如圖5.9所示。
Kafka的數(shù)據(jù)會(huì)被流式計(jì)算和批處理計(jì)算兩個(gè)引擎分別消費(fèi)。流處理使用Storm進(jìn)行計(jì)算,結(jié)果輸出到HBase或者數(shù)據(jù)庫(kù)。批處理計(jì)算使用Hive進(jìn)行分析計(jì)算,結(jié)果輸出到查詢(xún)系統(tǒng)和BI(商業(yè)智能)平臺(tái)。
數(shù)據(jù)分析師可以通過(guò)BI產(chǎn)品平臺(tái)進(jìn)行交互式的數(shù)據(jù)查詢(xún)?cè)L問(wèn),也可以通過(guò)可視化的報(bào)表工具查看已經(jīng)處理好的常用分析指標(biāo);公司高管也可以通過(guò)平臺(tái)上的天機(jī)系統(tǒng)查看公司主要業(yè)務(wù)指標(biāo)和報(bào)表。美團(tuán)大數(shù)據(jù)平臺(tái)的整個(gè)過(guò)程管理通過(guò)調(diào)度平臺(tái)進(jìn)行管理。公司內(nèi)部開(kāi)發(fā)者使用數(shù)據(jù)開(kāi)發(fā)平臺(tái)訪問(wèn)大數(shù)據(jù)平臺(tái),進(jìn)行ETL(數(shù)據(jù)提取、轉(zhuǎn)換、裝載)開(kāi)發(fā),提交任務(wù)作業(yè)并進(jìn)行數(shù)據(jù)管理。滴滴大數(shù)據(jù)平臺(tái)滴滴大數(shù)據(jù)平臺(tái)分為實(shí)時(shí)計(jì)算平臺(tái)(流式計(jì)算平臺(tái))和離線計(jì)算平臺(tái)(批處理計(jì)算平臺(tái))兩個(gè)部分。實(shí)時(shí)計(jì)算平臺(tái)架構(gòu)如圖5.10所示。數(shù)據(jù)采集以后輸出到Kafka消息隊(duì)列,消費(fèi)通道有兩個(gè),一個(gè)是數(shù)據(jù)ETL,使用Spark Streaming或者Flink將數(shù)據(jù)進(jìn)行清洗、轉(zhuǎn)換、處理后記錄到HDFS中,供后續(xù)批處理計(jì)算;另一個(gè)通道是Druid,計(jì)算實(shí)時(shí)監(jiān)控指標(biāo),將結(jié)果輸出到報(bào)警系統(tǒng)和實(shí)時(shí)圖表系統(tǒng)DashBoard,如圖5.10所示。離線計(jì)算平臺(tái)架構(gòu)如圖5.11所示。滴滴的離線大數(shù)據(jù)平臺(tái)是基于Hadoop?2(HDFS、Yarn、MapReduce)和Spark以及Hive構(gòu)建的,并在此基礎(chǔ)上開(kāi)發(fā)了自己的調(diào)度系統(tǒng)和開(kāi)發(fā)系統(tǒng)。調(diào)度系統(tǒng)和前面其他系統(tǒng)一樣,調(diào)度大數(shù)據(jù)作業(yè)的優(yōu)先級(jí)和執(zhí)行順序。開(kāi)發(fā)平臺(tái)是一個(gè)可視化的SQL編輯器,可以方便地查詢(xún)表結(jié)構(gòu)、開(kāi)發(fā)SQL,并發(fā)布到大數(shù)據(jù)集群上。此外,滴滴還重度使用HBase,并對(duì)相關(guān)產(chǎn)品(HBase、Phoenix)做了一些自定義的開(kāi)發(fā),維護(hù)著一個(gè)和實(shí)時(shí)、離線兩個(gè)大數(shù)據(jù)平臺(tái)同級(jí)別的HBase平臺(tái),它的架構(gòu)圖參見(jiàn)圖5.12。來(lái)自實(shí)時(shí)計(jì)算平臺(tái)和離線計(jì)算平臺(tái)的計(jì)算結(jié)果被保存到HBase中,然后應(yīng)用程序通過(guò)Phoenix訪問(wèn)HBase。而Phoenix是一個(gè)構(gòu)建在HBase上的SQL引擎,可以通過(guò)SQL方式訪問(wèn)HBase上的數(shù)據(jù)。
學(xué)架構(gòu)就是學(xué)架構(gòu)模式
可以看到,這些知名大廠的大數(shù)據(jù)平臺(tái)真的是大同小異,雖然由于各自場(chǎng)景和技術(shù)棧的不同,在大數(shù)據(jù)產(chǎn)品選型和架構(gòu)細(xì)節(jié)上略有差異,但整體思路基本上都是一樣的。不過(guò)也正是這種大同小異,讓我們能從各個(gè)角度了解大數(shù)據(jù)平臺(tái)架構(gòu),對(duì)大數(shù)據(jù)平臺(tái)架構(gòu)有更深刻的認(rèn)知。我在阿里巴巴工作期間,有一陣子不斷參加各種基礎(chǔ)技術(shù)產(chǎn)品的架構(gòu)評(píng)審會(huì)。有一次,另一個(gè)和我一樣經(jīng)常參加這類(lèi)會(huì)議的架構(gòu)師說(shuō):“我感覺(jué)這些產(chǎn)品的架構(gòu)怎么都一樣”。經(jīng)他一提醒,大家紛紛點(diǎn)頭稱(chēng)是,好像確實(shí)如此。同一類(lèi)問(wèn)題的解決方案通常是相似的。一個(gè)解決方案可以解決重復(fù)出現(xiàn)的同類(lèi)問(wèn)題,這種解決方案就稱(chēng)為模式。模式幾乎無(wú)處不在,一旦一個(gè)解決方案被證明是行之有效的,就會(huì)被重復(fù)使用解決同類(lèi)的問(wèn)題。所以我們看到,很多大數(shù)據(jù)產(chǎn)品的架構(gòu)也都差不多,比如Hadoop 1、Yarn、Spark、Flink、Storm,這些產(chǎn)品的架構(gòu)部署真的是太像了。對(duì)于有志于成為架構(gòu)師的工程師來(lái)說(shuō),一方面當(dāng)然要提高自己的編程水平,另一方面也可以多看看各種架構(gòu)設(shè)計(jì)文檔,多參加一些架構(gòu)師技術(shù)大會(huì)。在我看來(lái),編程需要天分;而架構(gòu)設(shè)計(jì),真的是熟能生巧。今天聯(lián)合「電子工業(yè)博文視點(diǎn)出版社」給大家?guī)?lái)3本《大數(shù)據(jù)技術(shù)架構(gòu):核心原理與應(yīng)用實(shí)踐》技術(shù)書(shū)籍福利,免費(fèi)送給大家!感謝博文視點(diǎn)的大力贊助與支持!
抽獎(jiǎng)規(guī)則:1、添加小編微信的前3名好友直接中獎(jiǎng)!2、掃以下二維碼回復(fù)“好書(shū)”即可獲得小編的微信關(guān)于作者:李智慧,同程旅行交通首席架構(gòu)師。曾任阿里巴巴、Intel架構(gòu)師,長(zhǎng)期從事分布式系統(tǒng)與大數(shù)據(jù)開(kāi)發(fā),Apache Spark 代碼貢獻(xiàn)者,騰訊云 TVP,著有暢銷(xiāo)書(shū)《大型網(wǎng)站技術(shù)架構(gòu):核心原理與案例分析》。?本文節(jié)選自《大數(shù)據(jù)技術(shù)架構(gòu):核心原理與應(yīng)用實(shí)踐》(博文視點(diǎn)出品),經(jīng)出版方授權(quán)發(fā)布。
未來(lái)的生活一定是數(shù)字化的生活,掌握一些大數(shù)據(jù)技術(shù)總是好事。但本質(zhì)上它也只是一個(gè)工具,人生的旅程,既要緊跟時(shí)代,也要謹(jǐn)防隨波逐流。相信各位讀者能以《大數(shù)據(jù)技術(shù)架構(gòu):核心原理與應(yīng)用實(shí)踐》一書(shū)的內(nèi)容為起點(diǎn)而非終點(diǎn),繼續(xù)探索,走出自己的光明大道。
▼點(diǎn)擊閱讀原文,即可購(gòu)買(mǎi)此書(shū)