大數(shù)據(jù)技術(shù)架構(gòu)詳解
數(shù)據(jù)出現(xiàn)的原因:
大多數(shù)的技術(shù)突破來源于實際的產(chǎn)品需要,大數(shù)據(jù)最初誕生于谷歌的搜索引擎中。隨著web2.0時代的發(fā)展,互聯(lián)網(wǎng)上數(shù)據(jù)量呈獻(xiàn)爆炸式的增長,為了滿足信息搜索的需要,對大規(guī)模數(shù)據(jù)的存儲提出了非常強(qiáng)勁的需要。基于成本的考慮,通過提升硬件來解決大批量數(shù)據(jù)的搜索越來越不切實際,于是谷歌提出了一種基于軟件的可靠文件存儲體系GFS,使用普通的PC機(jī)來并行支撐大規(guī)模的存儲。存進(jìn)去的數(shù)據(jù)是低價值的,只有對數(shù)據(jù)進(jìn)行過加工才能滿足實際的應(yīng)用需要,于是谷歌又創(chuàng)造了MapReduce這一計算模型,該模型能夠利用集群的力量將復(fù)雜的運算拆分到每一臺普通PC上,計算完成后通過匯總得到最終的計算結(jié)果,這樣就能夠通過直接增加機(jī)器數(shù)量就獲得更好的運算能力了。
有了GFS和MapReduce之后,文件的存儲和運算得到了解決,這時候又出現(xiàn)了新的問題。GFS的隨機(jī)讀寫能力很差,而谷歌有需要一種來存放格式化數(shù)據(jù)的數(shù)據(jù)庫,原本通過單機(jī)的數(shù)據(jù)庫就能解決的問題到了谷歌那里就悲劇了,于是神器的谷歌就又開發(fā)了一套BigTable系統(tǒng),利用GFS的文件存儲系統(tǒng)外加一個分布式的鎖管理系統(tǒng)Chubby就設(shè)計出來了BigTable這樣一個列式的數(shù)據(jù)庫系統(tǒng)。
在谷歌完成了上述的系統(tǒng)后,就把其中的思想作為論文發(fā)布出來了,基于這些論文,出現(xiàn)了一個用JAVA寫的類GFS開源項目Hadoop,最開始hadoop的贊助人是yahoo,后來這個項目成了Apche的頂級項目。
大數(shù)據(jù)的解決方案:
谷歌的那一套系統(tǒng)是閉源的,開源的Hadoop于是就廣泛傳播開來了。
和谷歌那套系統(tǒng)類似,Hadoop的最核心的存儲層叫做HDFS,全稱是Hadoop文件存儲系統(tǒng),有了存儲系統(tǒng)還要有分析系統(tǒng),于是就有了開源版本的MapReduce,類似的參照BigTable就有了Hbase。一開源之后整個系統(tǒng)用的人就多了,于是大家都像要各種各樣的特性。facebook的那些人覺得mapreduce程序太難寫,于是就開發(fā)了Hive,Hive就是一套能把SQL語句轉(zhuǎn)成Mapreduce的工具,有了這套工具只要你會SQL就可以來Hadoop上寫mapreduce程序分析數(shù)據(jù)了。對了,參考chubby,我們有了開源的ZooKeeper來作為分布式鎖服務(wù)的提供者。
由于Hadoop最開始設(shè)計是用來跑文件的,對于數(shù)據(jù)的批處理來說這沒什么問題,有一天突然大家想要一個實時的查詢服務(wù),數(shù)據(jù)這么大,要滿足實時查詢首先要拋開的是mapreduce,因為它真的好慢。2008年的時候一家叫Cloudera的公司出現(xiàn)了,他們的目標(biāo)是要做hadoop界的redhat,把各種外圍系統(tǒng)打包進(jìn)去組成一個完整的生態(tài)系統(tǒng),后來他們開發(fā)出來了impala,impala的速度比mapreduce在實時分析上的效率有了幾十倍的提升,后來hadoop的創(chuàng)始人Doug CutTIng也加入了cloudera。這時候?qū)W院派也開始發(fā)力了,加州大學(xué)伯克利分校開發(fā)出來了Spark來做實時查詢處理,剛開始Spark的語法好詭異,后來慢慢出現(xiàn)了Shark項目,漸漸的使得Spark向SQL語法靠近。
未來的發(fā)展趨勢:
時代的發(fā)展決定了未來幾乎就要變成數(shù)據(jù)的時代了,在這樣的一個時代,大數(shù)據(jù)的需求越來越深,摒棄過去的抽樣調(diào)查,改為全量的統(tǒng)計分析,從一些原本無意義的數(shù)據(jù)中挖掘價值。當(dāng)前大數(shù)據(jù)已經(jīng)開始逐漸服務(wù)于我們的生活,搜索、科學(xué)、用戶分析。。。
為了進(jìn)一步提供大數(shù)據(jù)的分析能力,內(nèi)存計算的概念在未來還會持續(xù)很長的時間,通過內(nèi)存計算,摒棄磁盤IO對性能的天花板作用,將運算的結(jié)果以實時的方式呈獻(xiàn)在我們面前。
大數(shù)據(jù)數(shù)量龐大,格式多樣化。大量數(shù)據(jù)由家庭、制造工廠和辦公場所的各種設(shè)備、互聯(lián)網(wǎng)事務(wù)交易、社交網(wǎng)絡(luò)的活動、自動化傳感器、移動設(shè)備以及科研儀器等生成。它的爆炸式增長已超出了傳統(tǒng)IT基礎(chǔ)架構(gòu)的處理能力,給企業(yè)和社會帶來嚴(yán)峻的數(shù)據(jù)管理問題。因此必須開發(fā)新的數(shù)據(jù)架構(gòu),圍繞“數(shù)據(jù)收集、數(shù)據(jù)管理、數(shù)據(jù)分析、知識形成、智慧行動”的全過程,開發(fā)使用這些數(shù)據(jù),釋放出更多數(shù)據(jù)的隱藏價值。
一、大數(shù)據(jù)建設(shè)思路
1)數(shù)據(jù)的獲得
大數(shù)據(jù)產(chǎn)生的根本原因在于感知式系統(tǒng)的廣泛使用。隨著技術(shù)的發(fā)展,人們已經(jīng)有能力制造極其微小的帶有處理功能的傳感器,并開始將這些設(shè)備廣泛的布置于社會的各個角落,通過這些設(shè)備來對整個社會的運轉(zhuǎn)進(jìn)行監(jiān)控。這些設(shè)備會源源不斷的產(chǎn)生新數(shù)據(jù),這種數(shù)據(jù)的產(chǎn)生方式是自動的。因此在數(shù)據(jù)收集方面,要對來自網(wǎng)絡(luò)包括物聯(lián)網(wǎng)、社交網(wǎng)絡(luò)和機(jī)構(gòu)信息系統(tǒng)的數(shù)據(jù)附上時空標(biāo)志,去偽存真,盡可能收集異源甚至是異構(gòu)的數(shù)據(jù),必要時還可與歷史數(shù)據(jù)對照,多角度驗證數(shù)據(jù)的全面性和可信性。
2)數(shù)據(jù)的匯集和存儲
數(shù)據(jù)只有不斷流動和充分共享,才有生命力。應(yīng)在各專用數(shù)據(jù)庫建設(shè)的基礎(chǔ)上,通過數(shù)據(jù)集成,實現(xiàn)各級各類信息系統(tǒng)的數(shù)據(jù)交換和數(shù)據(jù)共享。 數(shù)據(jù)存儲要達(dá)到低成本、低能耗、高可靠性目標(biāo),通常要用到冗余配置、分布化和云計算技術(shù),在存儲時要按照一定規(guī)則對數(shù)據(jù)進(jìn)行分類,通過過濾和去重,減少存儲量,同時加入便于日后檢索的標(biāo)簽。
3)數(shù)據(jù)的管理
大數(shù)據(jù)管理的技術(shù)也層出不窮。在眾多技術(shù)中,有6種數(shù)據(jù)管理技術(shù)普遍被關(guān)注,即分布式存儲與計算、內(nèi)存數(shù)據(jù)庫技術(shù)、列式數(shù)據(jù)庫技術(shù)、云數(shù)據(jù)庫、非關(guān)系型的數(shù)據(jù)庫、移動數(shù)據(jù)庫技術(shù)。其中分布式存儲與計算受關(guān)注度最高。上圖是一個圖書數(shù)據(jù)管理系統(tǒng)。
4)數(shù)據(jù)的分析
數(shù)據(jù)分析處理:有些行業(yè)的數(shù)據(jù)涉及上百個參數(shù),其復(fù)雜性不僅體現(xiàn)在數(shù)據(jù)樣本本身,更體現(xiàn)在多源異構(gòu)、多實體和多空間之間的交互動態(tài)性,難以用傳統(tǒng)的方法描述與度量,處理的復(fù)雜度很大,需要將高維圖像等多媒體數(shù)據(jù)降維后度量與處理,利用上下文關(guān)聯(lián)進(jìn)行語義分析,從大量動態(tài)而且可能是模棱兩可的數(shù)據(jù)中綜合信息,并導(dǎo)出可理解的內(nèi)容。大數(shù)據(jù)的處理類型很多,主要的處理模式可以分為流處理和批處理兩種。批處理是先存儲后處理,而流處理則是直接處理數(shù)據(jù)。挖掘的任務(wù)主要是關(guān)聯(lián)分析、聚類分析、分類、預(yù)測、時序模式和偏差分析等。
5)大數(shù)據(jù)的價值:決策支持系統(tǒng)
大數(shù)據(jù)的神奇之處就是通過對過去和現(xiàn)在的數(shù)據(jù)進(jìn)行分析,它能夠精確預(yù)測未來;通過對組織內(nèi)部的和外部的數(shù)據(jù)整合,它能夠洞察事物之間的相關(guān)關(guān)系;通過對海量數(shù)據(jù)的挖掘,它能夠代替人腦,承擔(dān)起企業(yè)和社會管理的職責(zé)。
6)數(shù)據(jù)的使用
大數(shù)據(jù)有三層內(nèi)涵:一是數(shù)據(jù)量巨大、來源多樣和類型多樣的數(shù)據(jù)集;二是新型的數(shù)據(jù)處理和分析技術(shù);三是運用數(shù)據(jù)分析形成價值。大數(shù)據(jù)對科學(xué)研究、經(jīng)濟(jì)建設(shè)、社會發(fā)展和文化生活等各個領(lǐng)域正在產(chǎn)生革命性的影響。大數(shù)據(jù)應(yīng)用的關(guān)鍵,也是其必要條件,就在于“IT”與“經(jīng)營”的融合,當(dāng)然,這里的經(jīng)營的內(nèi)涵可以非常廣泛,小至一個零售門店的經(jīng)營,大至一個城市的經(jīng)營。
二、大數(shù)據(jù)基本架構(gòu)
基于上述大數(shù)據(jù)的特征,通過傳統(tǒng)IT技術(shù)存儲和處理大數(shù)據(jù)成本高昂。一個企業(yè)要大力發(fā)展大數(shù)據(jù)應(yīng)用首先需要解決兩個問題:一是低成本、快速地對海量、多類別的數(shù)據(jù)進(jìn)行抽取和存儲;二是使用新的技術(shù)對數(shù)據(jù)進(jìn)行分析和挖掘,為企業(yè)創(chuàng)造價值。因此,大數(shù)據(jù)的存儲和處理與云計算技術(shù)密不可分,在當(dāng)前的技術(shù)條件下,基于廉價硬件的分布式系統(tǒng)(如Hadoop等)被認(rèn)為是最適合處理大數(shù)據(jù)的技術(shù)平臺。
Hadoop是一個分布式的基礎(chǔ)架構(gòu),能夠讓用戶方便高效地利用運算資源和處理海量數(shù)據(jù),目前已在很多大型互聯(lián)網(wǎng)企業(yè)得到了廣泛應(yīng)用,如亞馬遜、Facebook和Yahoo等。其是一個開放式的架構(gòu),架構(gòu)成員也在不斷擴(kuò)充完善中,通常架構(gòu)如圖2所示:
Hadoop體系架構(gòu)
?。?)Hadoop最底層是一個HDFS(Hadoop Distributed File System,分布式文件系統(tǒng)),存儲在HDFS中的文件先被分成塊,然后再將這些塊復(fù)制到多個主機(jī)中(DataNode,數(shù)據(jù)節(jié)點)。
?。?)Hadoop的核心是MapReduce(映射和化簡編程模型)引擎,Map意為將單個任務(wù)分解為多個,而Reduce則意為將分解后的多任務(wù)結(jié)果匯總,該引擎由JobTrackers(工作追蹤,對應(yīng)命名節(jié)點)和TaskTrackers(任務(wù)追蹤,對應(yīng)數(shù)據(jù)節(jié)點)組成。當(dāng)處理大數(shù)據(jù)查詢時,MapReduce會將任務(wù)分解在多個節(jié)點處理,從而提高了數(shù)據(jù)處理的效率,避免了單機(jī)性能瓶頸限制。
?。?)Hive是Hadoop架構(gòu)中的數(shù)據(jù)倉庫,主要用于靜態(tài)的結(jié)構(gòu)以及需要經(jīng)常分析的工作。Hbase主要作為面向列的數(shù)據(jù)庫運行在HDFS上,可存儲PB級的數(shù)據(jù)。Hbase利用MapReduce來處理內(nèi)部的海量數(shù)據(jù),并能在海量數(shù)據(jù)中定位所需的數(shù)據(jù)且訪問它。
?。?)Sqoop是為數(shù)據(jù)的互操作性而設(shè)計,可以從關(guān)系數(shù)據(jù)庫導(dǎo)入數(shù)據(jù)到Hadoop,并能直接導(dǎo)入到HDFS或Hive。
(5)Zookeeper在Hadoop架構(gòu)中負(fù)責(zé)應(yīng)用程序的協(xié)調(diào)工作,以保持Hadoop集群內(nèi)的同步工作。
(6)Thrift是一個軟件框架,用來進(jìn)行可擴(kuò)展且跨語言的服務(wù)的開發(fā),最初由Facebook開發(fā),是構(gòu)建在各種編程語言間無縫結(jié)合的、高效的服務(wù)。
Hadoop核心設(shè)計
Hbase——分布式數(shù)據(jù)存儲系統(tǒng)
Client:使用HBase RPC機(jī)制與HMaster和HRegionServer進(jìn)行通信
Zookeeper:協(xié)同服務(wù)管理,HMaster通過Zookeepe可以隨時感知各個HRegionServer的健康狀況
HMaster: 管理用戶對表的增刪改查操作
HRegionServer:HBase中最核心的模塊,主要負(fù)責(zé)響應(yīng)用戶I/O請求,向HDFS文件系統(tǒng)中讀寫數(shù)據(jù)
HRegion:Hbase中分布式存儲的最小單元,可以理解成一個Table
HStore:HBase存儲的核心。由MemStore和StoreFile組成。
HLog:每次用戶操作寫入Memstore的同時,也會寫一份數(shù)據(jù)到HLog文件
結(jié)合上述Hadoop架構(gòu)功能,大數(shù)據(jù)平臺系統(tǒng)功能建議如圖所示:
應(yīng)用系統(tǒng):對于大多數(shù)企業(yè)而言,運營領(lǐng)域的應(yīng)用是大數(shù)據(jù)最核心的應(yīng)用,之前企業(yè)主要使用來自生產(chǎn)經(jīng)營中的各種報表數(shù)據(jù),但隨著大數(shù)據(jù)時代的到來,來自于互聯(lián)網(wǎng)、物聯(lián)網(wǎng)、各種傳感器的海量數(shù)據(jù)撲面而至。于是,一些企業(yè)開始挖掘和利用這些數(shù)據(jù),來推動運營效率的提升。
數(shù)據(jù)平臺:借助大數(shù)據(jù)平臺,未來的互聯(lián)網(wǎng)絡(luò)將可以讓商家更了解消費者的使用習(xí)慣,從而改進(jìn)使用體驗?;诖髷?shù)據(jù)基礎(chǔ)上的相應(yīng)分析,能夠更有針對性的改進(jìn)用戶體驗,同時挖掘新的商業(yè)機(jī)會。
數(shù)據(jù)源:數(shù)據(jù)源是指數(shù)據(jù)庫應(yīng)用程序所使用的數(shù)據(jù)庫或者數(shù)據(jù)庫服務(wù)器。豐富的數(shù)據(jù)源是大數(shù)據(jù)產(chǎn)業(yè)發(fā)展的前提。數(shù)據(jù)源在不斷拓展,越來越多樣化。如:智能汽車可以把動態(tài)行駛過程變成數(shù)據(jù),嵌入到生產(chǎn)設(shè)備里的物聯(lián)網(wǎng)可以把生產(chǎn)過程和設(shè)備動態(tài)狀況變成數(shù)據(jù)。對數(shù)據(jù)源的不斷拓展不僅能帶來采集設(shè)備的發(fā)展,而且可以通過控制新的數(shù)據(jù)源更好地控制數(shù)據(jù)的價值。然而我國數(shù)字化的數(shù)據(jù)資源總量遠(yuǎn)遠(yuǎn)低于美歐,就已有有限的數(shù)據(jù)資源來說,還存在標(biāo)準(zhǔn)化、準(zhǔn)確性、完整性低,利用價值不高的情況,這大大降低了數(shù)據(jù)的價值
三、大數(shù)據(jù)的目標(biāo)效果
通過大數(shù)據(jù)的引入和部署,可以達(dá)到如下效果:
1)數(shù)據(jù)整合
·統(tǒng)一數(shù)據(jù)模型:承載企業(yè)數(shù)據(jù)模型,促進(jìn)企業(yè)各域數(shù)據(jù)邏輯模型的統(tǒng)一;
·統(tǒng)一數(shù)據(jù)標(biāo)準(zhǔn):統(tǒng)一建立標(biāo)準(zhǔn)的數(shù)據(jù)編碼目錄,實現(xiàn)企業(yè)數(shù)據(jù)的標(biāo)準(zhǔn)化與統(tǒng)一存儲;
·統(tǒng)一數(shù)據(jù)視圖:實現(xiàn)統(tǒng)一數(shù)據(jù)視圖,使企業(yè)在客戶、產(chǎn)品和資源等視角獲取到一致的信息。
2)數(shù)據(jù)質(zhì)量管控
·數(shù)據(jù)質(zhì)量校驗:根據(jù)規(guī)則對所存儲的數(shù)據(jù)進(jìn)行一致性、完整性和準(zhǔn)確性的校驗,保證數(shù)據(jù)的一致性、完整性和準(zhǔn)確性;
·數(shù)據(jù)質(zhì)量管控:通過建立企業(yè)數(shù)據(jù)的質(zhì)量標(biāo)準(zhǔn)、數(shù)據(jù)管控的組織、數(shù)據(jù)管控的流程,對數(shù)據(jù)質(zhì)量進(jìn)行統(tǒng)一管控,以達(dá)到數(shù)據(jù)質(zhì)量逐步完善。
3)數(shù)據(jù)共享
·消除網(wǎng)狀接口,建立大數(shù)據(jù)共享中心,為各業(yè)務(wù)系統(tǒng)提供共享數(shù)據(jù),降低接口復(fù)雜度,提高系統(tǒng)間接口效率與質(zhì)量;
·以實時或準(zhǔn)實時的方式將整合或計算好的數(shù)據(jù)向外系統(tǒng)提供。
4)數(shù)據(jù)應(yīng)用
·查詢應(yīng)用:平臺實現(xiàn)條件不固定、不可預(yù)見、格式靈活的按需查詢功能;
·固定報表應(yīng)用:視統(tǒng)計維度和指標(biāo)固定的分析結(jié)果的展示,可根據(jù)業(yè)務(wù)系統(tǒng)的需求,分析產(chǎn)生各種業(yè)務(wù)報表數(shù)據(jù)等;
·動態(tài)分析應(yīng)用:按關(guān)心的維度和指標(biāo)對數(shù)據(jù)進(jìn)行主題性的分析,動態(tài)分析應(yīng)用中維度和指標(biāo)不固定。
四、總結(jié)
基于分布式技術(shù)構(gòu)建的大數(shù)據(jù)平臺能夠有效降低數(shù)據(jù)存儲成本,提升數(shù)據(jù)分析處理效率,并具備海量數(shù)據(jù)、高并發(fā)場景的支撐能力,可大幅縮短數(shù)據(jù)查詢響應(yīng)時間,滿足企業(yè)各上層應(yīng)用的數(shù)據(jù)需求。