版本 | 日期 | 備注 |
---|---|---|
1.0 | 2021.5.9 | 文章首發(fā) |
這是我的學(xué)習(xí)筆記订讼,大量摘抄網(wǎng)上、書本里的內(nèi)容聊疲,將我自己認(rèn)為關(guān)聯(lián)度較高的內(nèi)容呈現(xiàn)上來毫蚓。
大數(shù)據(jù)從數(shù)據(jù)源開始,經(jīng)過分析蹲姐、挖掘到最終獲得價值一般需要經(jīng)過6個主要環(huán)節(jié)磨取,包括數(shù)據(jù)收集、數(shù)據(jù)存儲柴墩、資源管理與服務(wù)協(xié)調(diào)忙厌、計算引擎、數(shù)據(jù)分析和數(shù)據(jù)可視化江咳,技術(shù)體系如圖所示逢净。每個環(huán)節(jié)都面臨不同程度的技術(shù)挑戰(zhàn)。
數(shù)據(jù)源
數(shù)據(jù)收集層由直接跟數(shù)據(jù)源對接的模塊構(gòu)成,負(fù)責(zé)將數(shù)據(jù)源中的數(shù)據(jù)近實時或?qū)崟r收集到一起汹胃。數(shù)據(jù)源具有分布式婶芭、異構(gòu)性、多樣化及流式產(chǎn)生等特點:
? 分布式:數(shù)據(jù)源通常分布在不同機器或設(shè)備上着饥,并通過網(wǎng)絡(luò)連接在一起犀农。
? 異構(gòu)性:任何能夠產(chǎn)生數(shù)據(jù)的系統(tǒng)均可以稱為數(shù)據(jù)源,比如Web服務(wù)器宰掉、數(shù)據(jù)庫呵哨、傳感器、手環(huán)轨奄、視頻攝像頭等孟害。
? 多樣化:數(shù)據(jù)的格式是多種多種多樣的,既有像用戶基本信息這樣的關(guān)系型數(shù)據(jù)挪拟,也有如圖片挨务、音頻和視頻等非關(guān)系型數(shù)據(jù)。
? 流式產(chǎn)生:數(shù)據(jù)源如同“水龍頭”一樣玉组,會源源不斷地產(chǎn)生“流水”(數(shù)據(jù))谎柄,而數(shù)據(jù)收集系統(tǒng)應(yīng)實時或近實時地將數(shù)據(jù)發(fā)送到后端,以便及時對數(shù)據(jù)進(jìn)行分析惯雳。
數(shù)據(jù)收集層
? 主要由關(guān)系型與非關(guān)系型數(shù)據(jù)收集組件朝巫,分布式消息隊列構(gòu)成。
? Sqoop/Canal:關(guān)系型數(shù)據(jù)收集和導(dǎo)入工具石景,是連接關(guān)系型數(shù)據(jù)庫(比如MySQL)和Hadoop(比如HDFS)的橋梁劈猿,Sqoop可將關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù)全量導(dǎo)入Hadoop,反之亦可潮孽,而Canal則可用于實現(xiàn)數(shù)據(jù)的增量導(dǎo)入揪荣。
? Flume:非關(guān)系型數(shù)據(jù)收集工具,主要是流式日志數(shù)據(jù)恩商,可近實時收集变逃,經(jīng)過濾必逆,聚集后加載到HDFS等存儲系統(tǒng)怠堪。
? Kafka:分布式消息隊列,一般作為數(shù)據(jù)總線使用名眉,它允許多個數(shù)據(jù)消費者訂閱并獲取感興趣的數(shù)據(jù)粟矿。相比于其他消息隊列,它采用分布式高容錯設(shè)計损拢,更適合大數(shù)據(jù)應(yīng)用場景陌粹。
數(shù)據(jù)儲存層
在大數(shù)據(jù)時代,由于數(shù)據(jù)收集系統(tǒng)會將各類數(shù)據(jù)源源不斷地發(fā)到中央化存儲系統(tǒng)中福压,這對數(shù)據(jù)存儲層的擴展性掏秩、容錯性及存儲模型等有較高要求或舞,總結(jié)如下:
? 擴展性:在實際應(yīng)用中,數(shù)據(jù)量會不斷增加蒙幻,現(xiàn)有集群的存儲能力很快將達(dá)到上限映凳,此時需要增加新的機器擴充存儲能力,這要求存儲系統(tǒng)本身具備非常好的線性擴展能力邮破。
? 容錯性:考慮到成本等因素诈豌,大數(shù)據(jù)系統(tǒng)從最初就假設(shè)構(gòu)建在廉價機器上,這就要求系統(tǒng)本身就有良好的容錯機制確保在機器出現(xiàn)故障時不會導(dǎo)致數(shù)據(jù)丟失抒和。
? 存儲模型:由于數(shù)據(jù)具有多樣性矫渔,數(shù)據(jù)存儲層應(yīng)支持多種數(shù)據(jù)模型,確保結(jié)構(gòu)化和非結(jié)構(gòu)化的數(shù)據(jù)能夠很容易保存下來摧莽。
典型的應(yīng)用:
- HDFS
- Kudu
- HBase
資源管理與服務(wù)協(xié)調(diào)層
主要是為了解決:
- 資源利用率
- 運維成本高
Iaas庙洼、K8S、Omega都屬于這一層镊辕。
計算引擎層
計算引擎層是大數(shù)據(jù)技術(shù)中最活躍的一層送膳,直到今天,仍不斷有新的計算引擎被提出丑蛤。 總體上講叠聋,可按照對時間性能的要求,將計算引擎分為三類:
? 批處理:該類計算引擎對時間要求最低受裹,一般處理時間為分鐘到小時級別碌补,甚至天級別,它追求的是高吞吐率棉饶,即單位時間內(nèi)處理的數(shù)據(jù)量盡可能大厦章,典型的應(yīng)用有搜索引擎構(gòu)建索引、批量數(shù)據(jù)分析等照藻。
? 交互式處理:該類計算引擎對時間要求比較高袜啃,一般要求處理時間為秒級別,這類系統(tǒng)需要跟人進(jìn)行交互幸缕,因此會提供類SQL的語言便于用戶使用群发,典型的應(yīng)用有數(shù)據(jù)查詢、參數(shù)化報表生成等发乔。
? 實時處理:該類計算引擎對時間要求最高熟妓,一般處理延遲在秒級以內(nèi),典型的應(yīng)用有廣告系統(tǒng)栏尚、輿情監(jiān)測等起愈。
數(shù)據(jù)分析層
數(shù)據(jù)分析層直接跟用戶應(yīng)用程序?qū)樱瑸槠涮峁┮子玫臄?shù)據(jù)處理工具。為了讓用戶分析數(shù)據(jù)更加容易抬虽,計算引擎會提供多樣化的工具官觅,包括應(yīng)用程序API、類SQL查詢語言阐污、數(shù)據(jù)挖掘SDK等缰猴。
在解決實際問題時,數(shù)據(jù)科學(xué)家往往需根據(jù)應(yīng)用的特點疤剑,從數(shù)據(jù)分析層選擇合適的工具滑绒,大部分情況下,可能會結(jié)合使用多種工具隘膘,典型的使用模式是:首先使用批處理框架對原始海量數(shù)據(jù)進(jìn)行分析疑故,產(chǎn)生較小規(guī)模的數(shù)據(jù)集,在此基礎(chǔ)上弯菊,再使用交互式處理工具對該數(shù)據(jù)集進(jìn)行快速查詢纵势,獲取最終結(jié)果。
數(shù)據(jù)可視化層
數(shù)據(jù)可視化層是直接面向用戶展示結(jié)果的一層管钳,由于該層直接對接用戶钦铁,是展示大數(shù)據(jù)價值的“門戶”,因此數(shù)據(jù)可視化是極具意義的才漆∨2埽考慮到大數(shù)據(jù)具有容量大、結(jié)構(gòu)復(fù)雜和維度多等特點醇滥,對大數(shù)據(jù)進(jìn)行可視化是極具挑戰(zhàn)性的黎比。