大數(shù)據(jù)平臺(tái)核心架構(gòu)圖鑒,建議收藏!
點(diǎn)擊關(guān)注公眾號(hào),Java干貨及時(shí)送達(dá)
我們先來(lái)看看這張圖,這是某公司使用的大數(shù)據(jù)平臺(tái)架構(gòu)圖,大部分公司應(yīng)該都差不多:

從這張大數(shù)據(jù)的整體架構(gòu)圖上看來(lái),大數(shù)據(jù)的核心層應(yīng)該是:數(shù)據(jù)采集層、數(shù)據(jù)存儲(chǔ)與分析層、數(shù)據(jù)共享層、數(shù)據(jù)應(yīng)用層,可能叫法有所不同,本質(zhì)上的角色都大同小異。
所以我下面就按這張架構(gòu)圖上的線索,慢慢來(lái)剖析一下,大數(shù)據(jù)的核心技術(shù)都包括什么。
一、數(shù)據(jù)采集

當(dāng)然,F(xiàn)lume通過(guò)配置與開(kāi)發(fā),也可以實(shí)時(shí)的從數(shù)據(jù)庫(kù)中同步數(shù)據(jù)到HDFS。
有可能一些合作伙伴提供的數(shù)據(jù),需要通過(guò)Ftp/Http等定時(shí)獲取,DataX也可以滿足該需求;
比如一些手工錄入的數(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可能需要上百行代碼;
另外,MySQL 系列面試題和答案全部整理好了,微信搜索Java技術(shù)棧,在后臺(tái)發(fā)送:面試,可以在線閱讀。

當(dāng)然,使用Hadoop框架自然而然也提供了MapReduce接口,如果真的很樂(lè)意開(kāi)發(fā)Java,或者對(duì)SQL不熟,那么也可以使用MapReduce來(lái)做分析與計(jì)算;最新面試題整理好了,點(diǎn)擊Java面試庫(kù)小程序在線刷題。
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集群。
三、數(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ì)算模塊直接寫(xiě)入數(shù)據(jù)共享。
點(diǎn)擊關(guān)注公眾號(hào),Java干貨及時(shí)送達(dá)
四、數(shù)據(jù)應(yīng)用
業(yè)務(wù)產(chǎn)品所使用的數(shù)據(jù),已經(jīng)存在于數(shù)據(jù)共享層,直接從數(shù)據(jù)共享層訪問(wèn)即可;
同業(yè)務(wù)產(chǎn)品,報(bào)表所使用的數(shù)據(jù),一般也是已經(jīng)統(tǒng)計(jì)匯總好的,存放于數(shù)據(jù)共享層;
這種即席查詢通常是現(xiàn)有的報(bào)表和數(shù)據(jù)共享層的數(shù)據(jù)并不能滿足他們的需求,需要從數(shù)據(jù)存儲(chǔ)層直接查詢。
當(dāng)然,你也可以使用Impala,如果不在乎平臺(tái)中再多一個(gè)框架的話。推薦一個(gè) Spring Boot 基礎(chǔ)教程及實(shí)戰(zhàn)示例:https://github.com/javastacks/spring-boot-best-practice
這種接口有通用的,有定制的。比如:一個(gè)從Redis中獲取用戶屬性的接口是通用的,所有的業(yè)務(wù)都可以調(diào)用這個(gè)接口來(lái)獲取用戶屬性。
五、實(shí)時(shí)計(jì)算
六、任務(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)行。
來(lái)源:http://lxw1234.com/archives/2015/08/471.htm

關(guān)注Java技術(shù)??锤喔韶?/strong>


