溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

大數(shù)據(jù)環(huán)境下互聯(lián)網(wǎng)行業(yè)數(shù)據(jù)倉(cāng)庫(kù)/數(shù)據(jù)平臺(tái)的架構(gòu)之漫談

發(fā)布時(shí)間:2020-08-10 11:41:45 來(lái)源:ITPUB博客 閱讀:139 作者:loveheping 欄目:軟件技術(shù)

導(dǎo)讀:

  • 整體架構(gòu)

  • 數(shù)據(jù)采集

  • 數(shù)據(jù)存儲(chǔ)與分析

  • 數(shù)據(jù)共享

  • 數(shù)據(jù)應(yīng)用

  • 實(shí)時(shí)計(jì)算

  • 任務(wù)調(diào)度與監(jiān)控

  • 元數(shù)據(jù)管理

  • 總結(jié)

一直想整理一下這塊內(nèi)容,既然是漫談,就想起什么說(shuō)什么吧。我一直是在互聯(lián)網(wǎng)行業(yè),就以互聯(lián)網(wǎng)行業(yè)來(lái)說(shuō)。

先大概列一下互聯(lián)網(wǎng)行業(yè)數(shù)據(jù)倉(cāng)庫(kù)、數(shù)據(jù)平臺(tái)的用途:

  1. 整合公司所有業(yè)務(wù)數(shù)據(jù),建立統(tǒng)一的數(shù)據(jù)中心;

  2. 提供各種報(bào)表,有給高層的,有給各個(gè)業(yè)務(wù)的;

  3. 為網(wǎng)站運(yùn)營(yíng)提供運(yùn)營(yíng)上的數(shù)據(jù)支持,就是通過(guò)數(shù)據(jù),讓運(yùn)營(yíng)及時(shí)了解網(wǎng)站和產(chǎn)品的運(yùn)營(yíng)效果;

  4. 為各個(gè)業(yè)務(wù)提供線上或線下的數(shù)據(jù)支持,成為公司統(tǒng)一的數(shù)據(jù)交換與提供平臺(tái);

  5. 分析用戶行為數(shù)據(jù),通過(guò)數(shù)據(jù)挖掘來(lái)降低投入成本,提高投入效果;比如廣告定向精準(zhǔn)投放、用戶個(gè)性化推薦等;

  6. 開(kāi)發(fā)數(shù)據(jù)產(chǎn)品,直接或間接為公司盈利;

  7. 建設(shè)開(kāi)放數(shù)據(jù)平臺(tái),開(kāi)放公司數(shù)據(jù);

  8. 。。。。。。

上面列出的內(nèi)容看上去和傳統(tǒng)行業(yè)數(shù)據(jù)倉(cāng)庫(kù)用途差不多,并且都要求數(shù)據(jù)倉(cāng)庫(kù)/數(shù)據(jù)平臺(tái)有很好的穩(wěn)定性、可靠性;但在互聯(lián)網(wǎng)行業(yè),除了數(shù)據(jù)量大之外,越來(lái)越多的業(yè)務(wù)要求時(shí)效性,甚至很多是要求實(shí)時(shí)的 ,另外,互聯(lián)網(wǎng)行業(yè)的業(yè)務(wù)變化非常快,不可能像傳統(tǒng)行業(yè)一樣,可以使用自頂向下的方法建立數(shù)據(jù)倉(cāng)庫(kù),一勞永逸,它要求新的業(yè)務(wù)很快能融入數(shù)據(jù)倉(cāng)庫(kù)中來(lái),老的下線的業(yè)務(wù),能很方便的從現(xiàn)有的數(shù)據(jù)倉(cāng)庫(kù)中下線;

其實(shí),互聯(lián)網(wǎng)行業(yè)的數(shù)據(jù)倉(cāng)庫(kù)就是所謂的敏捷數(shù)據(jù)倉(cāng)庫(kù),不但要求能快速的響應(yīng)數(shù)據(jù),也要求能快速的響應(yīng)業(yè)務(wù);

建設(shè)敏捷數(shù)據(jù)倉(cāng)庫(kù),除了對(duì)架構(gòu)技術(shù)上的要求之外,還有一個(gè)很重要的方面,就是數(shù)據(jù)建模,如果一上來(lái)就想著建立一套能兼容所有數(shù)據(jù)和業(yè)務(wù)的數(shù)據(jù)模型,那就又回到傳統(tǒng)數(shù)據(jù)倉(cāng)庫(kù)的建設(shè)上了,很難滿足對(duì)業(yè)務(wù)變化的快速響應(yīng)。應(yīng)對(duì)這種情況,一般是先將核心的持久化的業(yè)務(wù)進(jìn)行深度建模(比如:基于網(wǎng)站日志建立的網(wǎng)站統(tǒng)計(jì)分析模型和用戶瀏覽軌跡模型;基于公司核心用戶數(shù)據(jù)建立的用戶模型),其它的業(yè)務(wù)一般都采用維度+寬表的方式來(lái)建立數(shù)據(jù)模型。這塊是后話。

 

整體架構(gòu)

下面的圖是我們目前使用的數(shù)據(jù)平臺(tái)架構(gòu)圖,其實(shí)大多公司應(yīng)該都差不多:

大數(shù)據(jù)環(huán)境下互聯(lián)網(wǎng)行業(yè)數(shù)據(jù)倉(cāng)庫(kù)/數(shù)據(jù)平臺(tái)的架構(gòu)之漫談

邏輯上,一般都有數(shù)據(jù)采集層、數(shù)據(jù)存儲(chǔ)與分析層、數(shù)據(jù)共享層、數(shù)據(jù)應(yīng)用層??赡芙蟹ㄓ兴煌举|(zhì)上的角色都大同小異。

我們從下往上看:

       華麗的分割線:您可以關(guān)注  lxw的大數(shù)據(jù)田地  ,或者  加入郵件列表  ,隨時(shí)接收博客更新的通知郵件。

數(shù)據(jù)采集

數(shù)據(jù)采集層的任務(wù)就是把數(shù)據(jù)從各種數(shù)據(jù)源中采集和存儲(chǔ)到數(shù)據(jù)存儲(chǔ)上,期間有可能會(huì)做一些簡(jiǎn)單的清洗。

數(shù)據(jù)源的種類比較多:

  • 網(wǎng)站日志:

作為互聯(lián)網(wǎng)行業(yè),網(wǎng)站日志占的份額最大,網(wǎng)站日志存儲(chǔ)在多臺(tái)網(wǎng)站日志服務(wù)器上,

一般是在每臺(tái)網(wǎng)站日志服務(wù)器上部署flume agent,實(shí)時(shí)的收集網(wǎng)站日志并存儲(chǔ)到HDFS上;

  • 業(yè)務(wù)數(shù)據(jù)庫(kù):

業(yè)務(wù)數(shù)據(jù)庫(kù)的種類也是多種多樣,有Mysql、Oracle、SqlServer等,這時(shí)候,我們迫切的需要一種能從各種數(shù)據(jù)庫(kù)中將數(shù)據(jù)同步到HDFS上的工具,Sqoop是一種,但是Sqoop太過(guò)繁重,而且不管數(shù)據(jù)量大小,都需要啟動(dòng)MapReduce來(lái)執(zhí)行,而且需要Hadoop集群的每臺(tái)機(jī)器都能訪問(wèn)業(yè)務(wù)數(shù)據(jù)庫(kù);應(yīng)對(duì)此場(chǎng)景,淘寶開(kāi)源的DataX,是一個(gè)很好的解決方案(可參考文章 《 異構(gòu)數(shù)據(jù)源海量數(shù)據(jù)交換工具-Taobao DataX 下載和使用 》),有資源的話,可以基于DataX之上做二次開(kāi)發(fā),就能非常好的解決,我們目前使用的DataHub也是。

當(dāng)然,F(xiàn)lume通過(guò)配置與開(kāi)發(fā),也可以實(shí)時(shí)的從數(shù)據(jù)庫(kù)中同步數(shù)據(jù)到HDFS。

  • 來(lái)自于Ftp/Http的數(shù)據(jù)源:

有可能一些合作伙伴提供的數(shù)據(jù),需要通過(guò)Ftp/Http等定時(shí)獲取,DataX也可以滿足該需求;

  • 其他數(shù)據(jù)源:

比如一些手工錄入的數(shù)據(jù),只需要提供一個(gè)接口或小程序,即可完成;

數(shù)據(jù)存儲(chǔ)與分析

毋庸置疑,HDFS是大數(shù)據(jù)環(huán)境下數(shù)據(jù)倉(cāng)庫(kù)/數(shù)據(jù)平臺(tái)最完美的數(shù)據(jù)存儲(chǔ)解決方案。

離線數(shù)據(jù)分析與計(jì)算,也就是對(duì)實(shí)時(shí)性要求不高的部分,在我看來(lái),Hive還是首當(dāng)其沖的選擇,豐富的數(shù)據(jù)類型、內(nèi)置函數(shù);壓縮比非常高的ORC文件存儲(chǔ)格式;非常方便的SQL支持,使得Hive在基于結(jié)構(gòu)化數(shù)據(jù)上的統(tǒng)計(jì)分析遠(yuǎn)遠(yuǎn)比MapReduce要高效的多,一句SQL可以完成的需求,開(kāi)發(fā)MR可能需要上百行代碼;

當(dāng)然,使用Hadoop框架自然而然也提供了MapReduce接口,如果真的很樂(lè)意開(kāi)發(fā)Java,或者對(duì)SQL不熟,那么也可以使用MapReduce來(lái)做分析與計(jì)算;

Spark是這兩年非常火的,經(jīng)過(guò)實(shí)踐,它的性能的確比MapReduce要好很多,而且和Hive、Yarn結(jié)合的越來(lái)越好,因此,必須支持使用Spark和SparkSQL來(lái)做分析和計(jì)算。因?yàn)橐呀?jīng)有Hadoop Yarn,使用Spark其實(shí)是非常容易的,不用單獨(dú)部署Spark集群,關(guān)于Spark On Yarn的相關(guān)文章,可參考:《 Spark On Yarn系列文章 》

實(shí)時(shí)計(jì)算部分,后面單獨(dú)說(shuō)。

 

華麗的分割線:您可以關(guān)注  lxw的大數(shù)據(jù)田地  ,或者  加入郵件列表  ,隨時(shí)接收博客更新的通知郵件。

數(shù)據(jù)共享

這里的數(shù)據(jù)共享,其實(shí)指的是前面數(shù)據(jù)分析與計(jì)算后的結(jié)果存放的地方,其實(shí)就是關(guān)系型數(shù)據(jù)庫(kù)NOSQL數(shù)據(jù)庫(kù)

前面使用Hive、MR、Spark、SparkSQL分析和計(jì)算的結(jié)果,還是在HDFS上,但大多業(yè)務(wù)和應(yīng)用不可能直接從HDFS上獲取數(shù)據(jù),那么就需要一個(gè)數(shù)據(jù)共享的地方,使得各業(yè)務(wù)和產(chǎn)品能方便的獲取數(shù)據(jù);

 

和數(shù)據(jù)采集層到HDFS剛好相反,這里需要一個(gè)從HDFS將數(shù)據(jù)同步至其他目標(biāo)數(shù)據(jù)源的工具,同樣,DataX也可以滿足。

 

另外,一些實(shí)時(shí)計(jì)算的結(jié)果數(shù)據(jù)可能由實(shí)時(shí)計(jì)算模塊直接寫入數(shù)據(jù)共享。

 

數(shù)據(jù)應(yīng)用

  • 業(yè)務(wù)產(chǎn)品

業(yè)務(wù)產(chǎn)品所使用的數(shù)據(jù),已經(jīng)存在于數(shù)據(jù)共享層,他們直接從數(shù)據(jù)共享層訪問(wèn)即可;

  • 報(bào)表

同業(yè)務(wù)產(chǎn)品,報(bào)表所使用的數(shù)據(jù),一般也是已經(jīng)統(tǒng)計(jì)匯總好的,存放于數(shù)據(jù)共享層;

  • 即席查詢

即席查詢的用戶有很多,有可能是數(shù)據(jù)開(kāi)發(fā)人員、網(wǎng)站和產(chǎn)品運(yùn)營(yíng)人員、數(shù)據(jù)分析人員、甚至是部門老大,他們都有即席查詢數(shù)據(jù)的需求;

這種即席查詢通常是現(xiàn)有的報(bào)表和數(shù)據(jù)共享層的數(shù)據(jù)并不能滿足他們的需求,需要從數(shù)據(jù)存儲(chǔ)層直接查詢。

即席查詢一般是通過(guò)SQL完成,最大的難度在于響應(yīng)速度上,使用Hive有點(diǎn)慢,目前我的解決方案是SparkSQL,它的響應(yīng)速度較Hive快很多,而且能很好的與Hive兼容。

當(dāng)然,你也可以使用Impala,如果不在乎平臺(tái)中再多一個(gè)框架的話。

  • OLAP

目前,很多的OLAP工具不能很好的支持從HDFS上直接獲取數(shù)據(jù),都是通過(guò)將需要的數(shù)據(jù)同步到關(guān)系型數(shù)據(jù)庫(kù)中做OLAP,但如果數(shù)據(jù)量巨大的話,關(guān)系型數(shù)據(jù)庫(kù)顯然不行;

這時(shí)候,需要做相應(yīng)的開(kāi)發(fā),從HDFS或者HBase中獲取數(shù)據(jù),完成OLAP的功能;

比如:根據(jù)用戶在界面上選擇的不定的維度和指標(biāo),通過(guò)開(kāi)發(fā)接口,從HBase中獲取數(shù)據(jù)來(lái)展示。

  • 其它數(shù)據(jù)接口

這種接口有通用的,有定制的。比如:一個(gè)從Redis中獲取用戶屬性的接口是通用的,所有的業(yè)務(wù)都可以調(diào)用這個(gè)接口來(lái)獲取用戶屬性。

 

華麗的分割線:您可以關(guān)注  lxw的大數(shù)據(jù)田地  ,或者  加入郵件列表  ,隨時(shí)接收博客更新的通知郵件。

實(shí)時(shí)計(jì)算

現(xiàn)在業(yè)務(wù)對(duì)數(shù)據(jù)倉(cāng)庫(kù)實(shí)時(shí)性的需求越來(lái)越多,比如:實(shí)時(shí)的了解網(wǎng)站的整體流量;實(shí)時(shí)的獲取一個(gè)廣告的曝光和點(diǎn)擊;在海量數(shù)據(jù)下,依靠傳統(tǒng)數(shù)據(jù)庫(kù)和傳統(tǒng)實(shí)現(xiàn)方法基本完成不了,需要的是一種分布式的、高吞吐量的、延時(shí)低的、高可靠的實(shí)時(shí)計(jì)算框架;Storm在這塊是比較成熟了,但我選擇Spark Streaming,原因很簡(jiǎn)單,不想多引入一個(gè)框架到平臺(tái)中,另外,Spark Streaming比Storm延時(shí)性高那么一點(diǎn)點(diǎn),那對(duì)于我們的需要可以忽略。

 

我們目前使用Spark Streaming實(shí)現(xiàn)了實(shí)時(shí)的網(wǎng)站流量統(tǒng)計(jì)、實(shí)時(shí)的廣告效果統(tǒng)計(jì)兩塊功能。

做法也很簡(jiǎn)單,由Flume在前端日志服務(wù)器上收集網(wǎng)站日志和廣告日志,實(shí)時(shí)的發(fā)送給Spark Streaming,由Spark Streaming完成統(tǒng)計(jì),將數(shù)據(jù)存儲(chǔ)至Redis,業(yè)務(wù)通過(guò)訪問(wèn)Redis實(shí)時(shí)獲取。

 

任務(wù)調(diào)度與監(jiān)控

在數(shù)據(jù)倉(cāng)庫(kù)/數(shù)據(jù)平臺(tái)中,有各種各樣非常多的程序和任務(wù),比如:數(shù)據(jù)采集任務(wù)、數(shù)據(jù)同步任務(wù)、數(shù)據(jù)分析任務(wù)等;

這些任務(wù)除了定時(shí)調(diào)度,還存在非常復(fù)雜的任務(wù)依賴關(guān)系,比如:數(shù)據(jù)分析任務(wù)必須等相應(yīng)的數(shù)據(jù)采集任務(wù)完成后才能開(kāi)始;數(shù)據(jù)同步任務(wù)需要等數(shù)據(jù)分析任務(wù)完成后才能開(kāi)始;

 

這就需要一個(gè)非常完善的任務(wù)調(diào)度與監(jiān)控系統(tǒng),它作為數(shù)據(jù)倉(cāng)庫(kù)/數(shù)據(jù)平臺(tái)的中樞,負(fù)責(zé)調(diào)度和監(jiān)控所有任務(wù)的分配與運(yùn)行。

 

前面有寫過(guò)文章,《 大數(shù)據(jù)平臺(tái)中的任務(wù)調(diào)度與監(jiān)控 》,這里不再累贅。

元數(shù)據(jù)管理

這塊想要做好,非常復(fù)雜,我覺(jué)得是且價(jià)值小于成本,因此我們暫不考慮這塊。目前只有每天任務(wù)運(yùn)行的元數(shù)據(jù)。

總結(jié)

在我看來(lái),架構(gòu),并不是技術(shù)越多越新越好,而是在可以滿足需求的情況下,越簡(jiǎn)單越穩(wěn)定越好。目前在我們的數(shù)據(jù)平臺(tái)中,開(kāi)發(fā)更多的是關(guān)注業(yè)務(wù),而不是技術(shù),他們把業(yè)務(wù)和需求搞清楚了,基本上只需要做簡(jiǎn)單的SQL開(kāi)發(fā),然后配置到調(diào)度系統(tǒng)就可以了,如果任務(wù)異常,會(huì)收到告警。這樣,可以使更多的資源專注于業(yè)務(wù)之上。

相關(guān)閱讀:

大數(shù)據(jù)平臺(tái)任務(wù)調(diào)度與監(jiān)控系統(tǒng)

Spark On Yarn系列文章

異構(gòu)數(shù)據(jù)源海量數(shù)據(jù)交換工具-Taobao DataX 下載和使用

 

好了,就這些吧,后面想到了再漫談吧。碼字很累的,希望多多支持我的博客。


轉(zhuǎn)載請(qǐng)注明: lxw的大數(shù)據(jù)田地  ?  大數(shù)據(jù)環(huán)境下互聯(lián)網(wǎng)行業(yè)數(shù)據(jù)倉(cāng)庫(kù)/數(shù)據(jù)平臺(tái)的架構(gòu)之漫談


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI