大數(shù)據(jù)的核心技術(shù)有哪些?大數(shù)據(jù)的核心層:數(shù)據(jù)采集層、數(shù)據(jù)存儲(chǔ)分析層、數(shù)據(jù)共享層、數(shù)據(jù)應(yīng)用層,叫法不同,作用基本相同。
大數(shù)據(jù)的核心技術(shù)有哪些?
1、數(shù)據(jù)收集
數(shù)據(jù)收集的任務(wù)是收集各種數(shù)據(jù)源的數(shù)據(jù)并將其存儲(chǔ)到數(shù)據(jù)存儲(chǔ)中,在此期間可以進(jìn)行一些簡單的清洗。有多種類型的數(shù)據(jù)源:
網(wǎng)站日志:作為互聯(lián)網(wǎng)行業(yè),網(wǎng)站日志占比最大。網(wǎng)站日志存儲(chǔ)在多個(gè)網(wǎng)站日志服務(wù)器上。一般在每臺(tái)網(wǎng)站日志服務(wù)器上部署flume agent,實(shí)時(shí)采集網(wǎng)站日志并存儲(chǔ)在HDFS上;
業(yè)務(wù)數(shù)據(jù)庫:還有各種類型的業(yè)務(wù)數(shù)據(jù)庫,包括Mysql、Oracle、SqlServer等,這個(gè)時(shí)候我們迫切需要一個(gè)可以將各種數(shù)據(jù)庫的數(shù)據(jù)同步到HDFS的工具。Sqoop 是一種,但是 Sqoop 太重了,無論數(shù)據(jù)大小,都需要啟動(dòng) MapReduce 執(zhí)行,Hadoop 集群中的每臺(tái)機(jī)器都需要能夠訪問業(yè)務(wù)數(shù)據(jù)庫;對(duì)于這種場景,淘寶開源的DataX是一個(gè)很好的解決方案。如果有資源,可以基于DataX進(jìn)行二次開發(fā),可以很好的解決。當(dāng)然,F(xiàn)lume 也可以通過配置和開發(fā),將數(shù)據(jù)庫中的數(shù)據(jù)實(shí)時(shí)同步到 HDFS。
數(shù)據(jù)源來自Ftp/Http:可能部分合作伙伴提供的數(shù)據(jù)需要定期通過Ftp/Http等獲取,DataX也可以滿足這個(gè)需求;
其他數(shù)據(jù)源:如一些手動(dòng)錄入的數(shù)據(jù),只需要提供一個(gè)接口或小程序即可完成。
2、數(shù)據(jù)存儲(chǔ)與分析
毫無疑問,HDFS是大數(shù)據(jù)環(huán)境下數(shù)據(jù)倉庫/數(shù)據(jù)平臺(tái)最完美的數(shù)據(jù)存儲(chǔ)解決方案。
離線數(shù)據(jù)分析計(jì)算,也就是對(duì)實(shí)時(shí)性要求不高的部分,在我看來還是首選Hive,數(shù)據(jù)類型豐富,內(nèi)置功能;ORC文件存儲(chǔ)格式,壓縮比非常高;非常方便的 SQL 支持使得 Hive 基于結(jié)構(gòu)化數(shù)據(jù)的統(tǒng)計(jì)分析遠(yuǎn)比 MapReduce 高效。對(duì)于單個(gè) SQL 語句可以滿足的需求,MR 的開發(fā)可能需要數(shù)百行代碼。
當(dāng)然,使用 Hadoop 框架自然也提供了 MapReduce 接口。如果你真的很樂意開發(fā)Java,或者對(duì)SQL不熟悉,也可以使用MapReduce進(jìn)行分析計(jì)算。Spark在過去兩年非常流行。經(jīng)過實(shí)踐,它的性能確實(shí)比 MapReduce 好很多,而且結(jié)合 Hive 和 Yarn 也越來越好。因此,需要支持使用 Spark 和 SparkSQL 進(jìn)行分析計(jì)算。因?yàn)?Hadoop Yarn 已經(jīng)存在,所以不用單獨(dú)部署 Spark 集群,使用 Spark 其實(shí)是非常容易的。
3、數(shù)據(jù)共享
這里的數(shù)據(jù)共享,其實(shí)是指之前的數(shù)據(jù)分析計(jì)算結(jié)果存儲(chǔ)的地方,其實(shí)就是關(guān)系型數(shù)據(jù)庫和NOSQL數(shù)據(jù)庫;之前使用Hive、MR、Spark、SparkSQL分析計(jì)算的結(jié)果還在HDFS上。但是大部分業(yè)務(wù)和應(yīng)用無法直接從HDFS獲取數(shù)據(jù),所以需要一個(gè)數(shù)據(jù)共享的地方,讓每個(gè)業(yè)務(wù)和產(chǎn)品都能輕松獲取數(shù)據(jù);它與 HDFS 的數(shù)據(jù)收集層正好相反,需要從 HDFS 傳輸數(shù)據(jù)。與其他目標(biāo)數(shù)據(jù)源同步的工具,同樣DataX也能滿足。
另外,一些實(shí)時(shí)計(jì)算結(jié)果數(shù)據(jù)可以直接寫入實(shí)時(shí)計(jì)算模塊的數(shù)據(jù)共享中。
4、數(shù)據(jù)應(yīng)用
業(yè)務(wù)產(chǎn)品和業(yè)務(wù)產(chǎn)品使用的數(shù)據(jù)已經(jīng)存在于數(shù)據(jù)共享層,可以直接從數(shù)據(jù)共享層訪問;報(bào)表(FineReport,業(yè)務(wù)報(bào)表)與業(yè)務(wù)產(chǎn)品相同,報(bào)表中使用的數(shù)據(jù)一般已經(jīng)統(tǒng)計(jì)和匯總。存儲(chǔ)在數(shù)據(jù)共享層;ad hoc 查詢 ad hoc 查詢的用戶很多,可能是數(shù)據(jù)開發(fā)人員、網(wǎng)站和產(chǎn)品運(yùn)營商、數(shù)據(jù)分析師,甚至是部門負(fù)責(zé)人,他們都有臨時(shí)查詢數(shù)據(jù)的需求;這種即席查詢通常情況下,現(xiàn)有報(bào)表和數(shù)據(jù)共享層中的數(shù)據(jù)不能滿足其需求,需要直接從數(shù)據(jù)存儲(chǔ)層查詢。即席查詢通常通過 SQL 完成。最大的困難是響應(yīng)速度。使用 Hive 有點(diǎn)慢。可以使用 SparkSQL,它的響應(yīng)速度比 Hive 快得多,并且與 Hive 兼容。當(dāng)然,你也可以使用 Impala,如果你不關(guān)心平臺(tái)中多一個(gè)框架。
OLAP 目前很多OLAP工具都不能很好的支持直接從HDFS獲取數(shù)據(jù)。他們通過將需要的數(shù)據(jù)同步到關(guān)系數(shù)據(jù)庫中來做OLAP,但是如果數(shù)據(jù)量很大,關(guān)系數(shù)據(jù)庫顯然不能;這時(shí)候需要做相應(yīng)的開發(fā),從HDFS或者HBase獲取數(shù)據(jù),完成OLAP功能;例如,根據(jù)用戶在界面上選擇的不確定維度和指標(biāo),通過開發(fā)界面,從HBase中獲取數(shù)據(jù)進(jìn)行展示。
其他數(shù)據(jù)接口 有通用接口和定制接口。比如一個(gè)從Redis獲取用戶屬性的接口是通用的,所有的業(yè)務(wù)都可以調(diào)用這個(gè)接口來獲取用戶屬性。
5、實(shí)時(shí)計(jì)算
企業(yè)現(xiàn)在對(duì)數(shù)據(jù)倉庫的實(shí)時(shí)性要求越來越高,比如:實(shí)時(shí)了解一個(gè)網(wǎng)站的整體流量;實(shí)時(shí)獲取廣告的曝光和點(diǎn)擊;在海量數(shù)據(jù)下,依靠傳統(tǒng)的數(shù)據(jù)庫和傳統(tǒng)的實(shí)現(xiàn)方式,基本上是不可能的。需要一個(gè)分布式、高吞吐量、低延遲、高可靠的實(shí)時(shí)計(jì)算框架;Storm在這方面比較成熟,但是我選擇Spark Streaming的原因很簡單,就是不想在平臺(tái)上引入另外一個(gè)框架,另外Spark Streaming的延遲比Storm高一點(diǎn),對(duì)于我們來說可以忽略需要。
我們目前使用Spark Streaming來實(shí)現(xiàn)網(wǎng)站流量的實(shí)時(shí)統(tǒng)計(jì)和廣告效果的實(shí)時(shí)統(tǒng)計(jì)。方法也很簡單。Flume 在前端日志服務(wù)器上收集網(wǎng)站日志和廣告日志,并實(shí)時(shí)發(fā)送到 Spark Streaming。Spark Streaming 完成統(tǒng)計(jì),將數(shù)據(jù)存儲(chǔ)在 Redis 中,通過訪問 Redis 實(shí)時(shí)獲取服務(wù)。
6、任務(wù)調(diào)度與監(jiān)控
在數(shù)據(jù)倉庫/數(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ù)完成后才能啟動(dòng);數(shù)據(jù)分析任務(wù)完成后才能啟動(dòng)數(shù)據(jù)同步任務(wù);
這就需要一個(gè)非常完善的任務(wù)調(diào)度和監(jiān)控系統(tǒng)。作為數(shù)據(jù)倉庫/數(shù)據(jù)平臺(tái)的中心,負(fù)責(zé)調(diào)度和監(jiān)控所有任務(wù)的分配和運(yùn)行。更多關(guān)于大數(shù)據(jù)培訓(xùn)的問題,歡迎咨詢千鋒教育在線名師。千鋒教育擁有多年IT培訓(xùn)服務(wù)經(jīng)驗(yàn),采用全程面授高品質(zhì)、高體驗(yàn)培養(yǎng)模式,擁有國內(nèi)一體化教學(xué)管理及學(xué)員服務(wù),助力更多學(xué)員實(shí)現(xiàn)高薪夢想。