近年來,隨著計算機技術(shù)的發(fā)展,各領(lǐng)域的數(shù)據(jù)增長越來越快。這些數(shù)據(jù)來自方方面面,從搜集天氣情況的感測器、接入社交媒體網(wǎng)站的指令、數(shù)碼圖片、在線的視頻資料,到網(wǎng)絡(luò)購物的交易記錄、手機的全球定位系統(tǒng)信號等。隨著數(shù)據(jù)規(guī)模的急劇膨脹,各行業(yè)累積的數(shù)據(jù)量越來越巨大,數(shù)據(jù)類型也越來越多、越來越復(fù)雜,已經(jīng)超越了傳統(tǒng)數(shù)據(jù)管理系統(tǒng)、處理模式的能力范圍,傳統(tǒng)的串行數(shù)據(jù)庫系統(tǒng)已經(jīng)難以適應(yīng)這種飛速增長的應(yīng)用需求。在這種需求的驅(qū)動下,云計算中的MapReduce技術(shù)、并行數(shù)據(jù)庫技術(shù)以及云計算與數(shù)據(jù)庫相結(jié)合的技術(shù)應(yīng)運而生。
本文在大數(shù)據(jù)的背景下,對大數(shù)據(jù)處理技術(shù)進(jìn)行了探討,將其分為三類:MapReduce技術(shù)、并行數(shù)據(jù)庫技術(shù)和云計算與數(shù)據(jù)庫相結(jié)合的技術(shù)。通過研究這些技術(shù)的架構(gòu)、適用環(huán)境,本文提出了一種全新的云計算數(shù)據(jù)庫——數(shù)據(jù)立方。
1.云計算相關(guān)技術(shù)
1.1 大數(shù)據(jù)處理技術(shù)——MapReduce
MapReduce計算架構(gòu)把運行在大規(guī)模集群上的并行計算過程簡單抽象為兩個函數(shù):Map和Reduce,也就是分解與規(guī)約。簡單地說,MapReduce就是“任務(wù)的分解與結(jié)果的匯總”。程序?qū)⒋髷?shù)據(jù)分解為多個數(shù)據(jù)塊由Map函數(shù)處理,Reduce把分解后多任務(wù)處理產(chǎn)生的中間結(jié)果匯總起來,得到最終結(jié)果。適合MapReduce處理的任務(wù)特征為:待處理的大規(guī)模數(shù)據(jù)集可以切分為多個小的數(shù)據(jù)集,并且每一個小數(shù)據(jù)集都可以完全并行地進(jìn)行處理。
圖1介紹了用MapReduce處理大數(shù)據(jù)集的過程。一個MapReduce操作可以分為兩個階段:Map階段和Reduce階段。
圖1 MapReduce處理大數(shù)據(jù)集的過程
在映射階段,MapReduce并行計算架構(gòu)將用戶的輸入數(shù)據(jù)切分為肘個數(shù)據(jù)段,每個數(shù)據(jù)段對應(yīng)1個Map任務(wù)。每一個Map函數(shù)的輸入是數(shù)據(jù)段中的鍵值對<Kl,V1>集合,Mask函數(shù)是用戶繼承MapReduce并行計算架構(gòu)而編寫的,Map操作調(diào)用此函數(shù),輸出一組中間結(jié)果,即鍵值對<K2,V2>集合。接下來,按照中間結(jié)果集合的K2將中間結(jié)果集進(jìn)行排序,生成一個新的<K2,list(V2)>集合,使得對應(yīng)同一個K2的所有值的數(shù)據(jù)都聚集在一起。然后,按照K2的范圍將這些元組分割為月個片斷,對應(yīng)Reduce任務(wù)的數(shù)目。在規(guī)約階段,每一個Reduce操作的輸入是一個<K2,list(V2)>片斷,Reduce操作調(diào)用用戶定義的Reduce函數(shù),生成用戶需要的鍵值對<K3,V3>進(jìn)行輸出。
這種簡潔的并行計算模型在系統(tǒng)層面解決了可用性、擴展性、容錯性等問題,是非關(guān)系數(shù)據(jù)管理和分析技術(shù)的典型代表。MapReduce是面向廉價計算機組成的大規(guī)模集群設(shè)計的,其非共享結(jié)構(gòu)、松耦合性和較強的容錯能力帶來了較強的擴展能力,同時,MapReduce在工業(yè)界被廣泛應(yīng)用,Google、twitter、Facebook、Yahoo等廠商對其進(jìn)行了深度的改進(jìn)和擴展。此外,MapReduce的<key,value>存儲模型能夠存儲任意格式的數(shù)據(jù),Map和Reduce函數(shù)可以進(jìn)行各種復(fù)雜的數(shù)據(jù)處理,這也使得程序員的負(fù)擔(dān)加重,在對上層業(yè)務(wù)的開發(fā)效率上不如結(jié)構(gòu)化查詢語言(SQL)簡單。
在相同的硬件條件下,對于有具體條件的查詢來說,并行數(shù)據(jù)庫閉的性能是遠(yuǎn)遠(yuǎn)超過MapReduce的,但是對于在大數(shù)據(jù)上的復(fù)雜統(tǒng)計業(yè)務(wù)來說,MapReduce在速度上會占有一定優(yōu)勢,MapReduce是為非結(jié)構(gòu)化大數(shù)據(jù)的復(fù)雜處理而設(shè)計的,這些業(yè)務(wù)具有一次性處理的特點,此外由于采取了全數(shù)據(jù)掃描的模式以及對中間結(jié)果逐步匯總的策略,使其在擁有良好擴展能力和容錯能力的同時也導(dǎo)致了較高的磁盤和網(wǎng)絡(luò)I/O的負(fù)載以及較高的數(shù)據(jù)解析代價。
1.2 并行數(shù)據(jù)庫技術(shù)
在20世紀(jì)80年代,數(shù)據(jù)庫流行的同時并行數(shù)據(jù)庫也開始起源,早期并行數(shù)據(jù)庫(如Gamma和Grace)的基礎(chǔ)架構(gòu)被沿用至今,當(dāng)前的并行數(shù)據(jù)庫主要有Oracle的Exdata、EMC的Greenplum、Temdata,這些數(shù)據(jù)庫都支持標(biāo)準(zhǔn)SQL。并行數(shù)據(jù)庫一般可以分為無共享架構(gòu)(Shared-nothing)和磁盤共享存儲架構(gòu)(shared-disk)兩種存儲架構(gòu),如圖2所示。這兩種架構(gòu)有各自的優(yōu)缺點,在Shared—nothing系統(tǒng)中,數(shù)據(jù)集被切分成為了多個子集,集群中每個節(jié)點分別存儲一個子集在本地磁盤上,一般來說,shared-nothing系統(tǒng)可以提供很高的并行I/O和并行計算能力,但是也有多節(jié)點事務(wù)處理、數(shù)據(jù)傳輸以及數(shù)據(jù)傾斜等問題。在Shared-disk系統(tǒng)中,數(shù)據(jù)被集中存儲,所有的數(shù)據(jù)庫節(jié)點都可以訪問存儲系統(tǒng)的任意一個磁盤,因此數(shù)據(jù)也沒有必要被切分,這也避免了數(shù)據(jù)傾斜的問題,這種系統(tǒng)主要的缺陷在于較低的I/O帶寬和擴展能力。
圖2 無共享架構(gòu)(Shared-nothing)和磁盤共享存儲架構(gòu)(Shared-disk)
1.3 云計算與數(shù)據(jù)庫相結(jié)合的技術(shù)
與數(shù)據(jù)庫相結(jié)合的云計算技術(shù)一般指的是MapReduce技術(shù),當(dāng)前主要有Temdata公司的Aster Data和耶魯大學(xué)提出的HadoopDB。
Aster Data將MapReduce與SQL引擎相結(jié)合,針對大數(shù)據(jù)處理和分析提出了SQL小印Reduce框架,用戶可以使用JAVA、C++等多種語言在AsterData的并行框架上編寫MapReduce函數(shù),編寫的函數(shù)可以作為一個子查詢在SQL中使用,從而獲得SQL的易用性和MapReduce的開放性。同時Aster Data能夠?qū)Χ嘟Y(jié)構(gòu)化數(shù)據(jù)、原始數(shù)據(jù)進(jìn)行處理和分析,并擁有豐富的統(tǒng)計軟件包可以講數(shù)據(jù)分析推向數(shù)據(jù)庫內(nèi)進(jìn)行,提升了數(shù)據(jù)分析性能。
在HadoopDB中,系統(tǒng)清晰地分成兩層,上層使用Hadoop進(jìn)行任務(wù)的分解和調(diào)度,下層用RDBMS(PostgreSQL)進(jìn)行數(shù)據(jù)的查詢和處理,在處理查詢時,執(zhí)行的是SQLto mapReducetoSQL操作過程(SMS planner)。該工作的創(chuàng)新之處是:試圖利用Hadoop的任務(wù)調(diào)度機制提高系統(tǒng)的擴展性和容錯性,以解決大數(shù)據(jù)分析的橫向擴展問題;利用RDBMS實現(xiàn)數(shù)據(jù)存儲和查詢處理,以解決性能問題。在其性能實驗中,HadoopDB的性能仍然落后于關(guān)系數(shù)據(jù)庫系統(tǒng)。如何提升MapReduce的性能,已引起研究人員的高度重視,研究人員提出了MapReduce的各種優(yōu)化技術(shù),獲得了重要的性能改進(jìn)。Yale大學(xué)Abadi領(lǐng)導(dǎo)的小組正在使用包括列存儲、持續(xù)裝載和分析等技術(shù),以改進(jìn)HadoopDB的性能。
圖3 所示是HadoopDB的一個構(gòu)圖,在原來的Hadoop與hive的基礎(chǔ)上,增加了一些組件:其中SMSPlanner的作用是在hive解析SQL語句生成MapReduce任務(wù)樹之后,對MapReduce任務(wù)樹進(jìn)行優(yōu)化,指導(dǎo)Hadoop去并行數(shù)據(jù)庫中執(zhí)行SQL。Catalog里面存儲了并行數(shù)據(jù)庫的一些信息。Data loader負(fù)責(zé)把原始數(shù)據(jù)加載到并行數(shù)據(jù)庫中,需要完成的工作是對原始數(shù)據(jù)的劃分。Databaseconnector用于向各個節(jié)點傳遞信息,包含了節(jié)點里面數(shù)據(jù)庫的鏈接信息和需要執(zhí)行的SQL語句。ParalledDataBase用于代替HDFS在各個節(jié)點上存儲數(shù)據(jù)。
圖3 HadoopDB結(jié)構(gòu)圖
2.云計算數(shù)據(jù)庫——數(shù)據(jù)立方
通過對MapReduce、并行數(shù)據(jù)庫和兩者的混合技術(shù)研究,南京云創(chuàng)存儲科技有限公司推出了實施云計算數(shù)據(jù)庫——數(shù)據(jù)立方,該系統(tǒng)通過引入索引模塊、并行執(zhí)行架構(gòu)以及讀取本地磁盤的執(zhí)行方式,使查詢達(dá)到了實時完成、簡單易用、高可靠安全的效能,使艾字節(jié)級的數(shù)據(jù)能夠秒級處理,極大地提高了用戶執(zhí)行查詢操作后的使用效率,不僅在查詢和檢索這部分?jǐn)?shù)據(jù)的時候具有非常高的性能優(yōu)勢,數(shù)據(jù)立方還可以支持?jǐn)?shù)據(jù)倉庫存儲、數(shù)據(jù)深度挖掘和商業(yè)智能分析等、業(yè)務(wù)。
2.1 數(shù)據(jù)立方的體系架構(gòu)
數(shù)據(jù)立方(DataCube)的結(jié)構(gòu)分為用戶接口、索引、SQL解析器、作業(yè)生成器、元數(shù)據(jù)管理、并行計算架構(gòu)、分布式文件系統(tǒng)等部分,如圖4所示。
圖4 數(shù)據(jù)立方架構(gòu)
用戶接口主要有兩個:JDBC和Shell。JDBC主要執(zhí)行數(shù)據(jù)的定義操作,即建立數(shù)據(jù)庫、建表、建分區(qū),對數(shù)據(jù)庫、表和分區(qū)的刪改等,同時可執(zhí)行數(shù)據(jù)查詢的SQL語句,暫不支持單條記錄的增刪改;數(shù)據(jù)立方提供友好的shell交互界面,Shell支持?jǐn)?shù)據(jù)庫、表的增刪改以及數(shù)據(jù)查詢的SQL語句。數(shù)據(jù)在入庫的同時與數(shù)據(jù)對應(yīng)的索引也在同時建立,索引是一顆B樹,數(shù)據(jù)插入到內(nèi)存的同時,索引B樹也在生成,當(dāng)達(dá)到設(shè)置上限時,數(shù)據(jù)和索引會刷新到分布式文件系統(tǒng)上成為文件。數(shù)據(jù)立方的元數(shù)據(jù)存儲在數(shù)據(jù)庫中。其中包括,數(shù)據(jù)庫的名字和屬性,數(shù)據(jù)庫中的表,表的名字,表的列和分區(qū)及其屬性,表的屬性,表的數(shù)據(jù)所在目錄等等。SQL解析器接收從JDBc和Shell傳來的SQL查詢語句,同時對SQL進(jìn)行詞法分析、語法分析、編譯、優(yōu)化。作業(yè)生成器根據(jù)SQL語法樹生成查詢作業(yè),分析所要處理的數(shù)據(jù)表對應(yīng)的索引文件的所在存儲子節(jié)點位置,并將作業(yè)發(fā)送給并行計算架構(gòu)。并行計算架構(gòu)接收到作業(yè)生成器生成的作業(yè),根據(jù)索引文件的位置切分查詢作業(yè)形成子任務(wù),然后將子任務(wù)發(fā)送給數(shù)據(jù)所在的存儲子節(jié)點,每個節(jié)點執(zhí)行這些子任務(wù)查詢索引得到結(jié)果記錄所在的數(shù)據(jù)文件名與偏移量,并以廣播的方式發(fā)送查詢子任務(wù)到數(shù)據(jù)文件所在的節(jié)點,在執(zhí)行完畢后將結(jié)果返回。數(shù)據(jù)立方可以使用HDFS和cStor,作為底層存儲系統(tǒng),cStor是一個主從結(jié)構(gòu)的分布式文件系統(tǒng),不僅具有HDFS的高吞吐率、高讀寫性能等特性,還支持HDFS所不具備的對文件修改等功能,并且支持POXIS接口。
2.2 分布式并行計算架構(gòu)(DPCA)
數(shù)據(jù)立方的分布式并行架構(gòu)(DPCA)是典型的主從結(jié)構(gòu),如圖5所示。主Master與從Master分別部署在HDFS的主從NameNode物理節(jié)點上,而Slave部署在DataNode物理節(jié)點上,主從Master使用zookeeper同步,并共享系統(tǒng)日志,Master與Slave之間用心跳信息保持信息交換。
圖5 DPCA架構(gòu)
相對于MapReduce架構(gòu),DPCA具有實時性、計算的數(shù)據(jù)本地性以及數(shù)據(jù)平衡性。MapReduce架構(gòu)的作業(yè)(Job)提交過程較為復(fù)雜,客戶端將Job提交到JobTracker有較長的延遲,JobTracker將Job處理為MapReduceTask后,通過TaskTracker的心跳信息將Task任務(wù)返回給TaskTracker,此過程中也存在延遲。
MapReduce架構(gòu)雖然也遵循數(shù)據(jù)本地性,但仍會有很大比例的數(shù)據(jù)處理不是本地的,相對于MapReduce架構(gòu),DPCA的Job提交是實時性的,在提交Job之前所需程序Jar包已經(jīng)分發(fā)到所有計算節(jié)點,在Job提交之后,Master在初始化處理之后即將T鵲k直接分發(fā)到所有Slave節(jié)點上,如圖6所示,在Job提交后,Master根據(jù)數(shù)據(jù)文件所在位置分配Task,這樣在每個計算節(jié)點上要處理的HDFS上的數(shù)據(jù)塊就在本地,這樣避免了數(shù)據(jù)的移動,極大地減少了網(wǎng)絡(luò)10負(fù)載,縮短了計算時間,每個計算節(jié)點會根據(jù)Task中SQL解析器生成的執(zhí)行計劃對Task執(zhí)行的結(jié)果進(jìn)行分發(fā),分發(fā)的方式有3種:分發(fā)所有中間數(shù)據(jù)到所有計算節(jié)點、分發(fā)所有中間數(shù)據(jù)到部分節(jié)點、根據(jù)數(shù)據(jù)所在位置分發(fā),如圖7所示。并行計算架構(gòu)能夠周期性地對HDFS上的數(shù)據(jù)表進(jìn)行維護(hù),保持?jǐn)?shù)據(jù)表在所有的DataNode節(jié)點上所存儲的數(shù)據(jù)量的平衡,減少因數(shù)據(jù)負(fù)載的不平衡而導(dǎo)致的計算負(fù)載的不平衡。
圖6 并行計算架構(gòu)上作業(yè)執(zhí)行過程
圖7 并行計算架構(gòu)的3種分發(fā)方式
舉一個典型的小表與大表Join連接的實例,如圖8所示,Master解析Job中的執(zhí)行計劃,判斷小表的位置后,將Task0發(fā)送給了Slave0,指令Slave0發(fā)送小表到所有節(jié)點,而其他節(jié)點接收到的子任務(wù)是等待接受小表的數(shù)據(jù),接收到數(shù)據(jù)后將小表與大表連接并將數(shù)據(jù)返回給Master,當(dāng)所有數(shù)據(jù)返回完成則這個Job完成。
圖8 小表與大表的Join實例
2.3 分布式索引
MapReduce是對每個查詢都是直接從分布式文件系統(tǒng)中讀入原始數(shù)據(jù)文件,I/O代價遠(yuǎn)高于數(shù)據(jù)庫,相對于MapReduce架構(gòu)以及在其之上的SQL解析器Hive,數(shù)據(jù)立方引入了一種高效的分布式索引機制,不同于并行數(shù)據(jù)庫的Shared-nothing和Shared—disk架構(gòu),數(shù)據(jù)立方的數(shù)據(jù)文件與索引文件都存放在分布式文件系統(tǒng)之上。
數(shù)據(jù)在入庫的同時B樹索引在內(nèi)存中同步生成,B樹中的葉子節(jié)點存儲的是數(shù)據(jù)文件路徑與記錄在文件中的偏移量,如圖9所示,在B樹中的葉子節(jié)點達(dá)到設(shè)置上限后,索引將被序列化到分布式文件系統(tǒng)之上,在根據(jù)條件進(jìn)行單表查詢的時,Job被提交到并行計算框架,Master節(jié)點首先分析該表的索引文件根據(jù)索引文件所在的節(jié)點將Task發(fā)送到相應(yīng)的節(jié)點,每個節(jié)點在查詢本地的索引文件之后將符合條件的數(shù)據(jù)文件路徑+偏移量打包成Task根據(jù)數(shù)據(jù)文件位置進(jìn)行再次分發(fā),在數(shù)據(jù)文件中的記錄查詢出來之后將結(jié)果返回,如圖9所示。
圖9 B樹索引
3.實驗與評估
3.1 實驗環(huán)境
實驗環(huán)境搭建在兩個機架的12臺物理機組成的集群上。每臺物理機使用ubuntu9.04 server系統(tǒng),JDK版本為1.6.0.18,使用的Hadoop版本為2.0.0,將HDFS作為分布式存儲環(huán)境。軟硬件配置如表1、表2所示。
表1、表2 硬件配置和軟件配置
當(dāng)前與數(shù)據(jù)立方類似的產(chǎn)品有分布式數(shù)據(jù)庫和數(shù)據(jù)倉庫,如:開源的HIVE、HadoopDB等,因此我們在數(shù)據(jù)入庫、查詢、查詢的并發(fā)量以及線性擴展等多方面對數(shù)據(jù)立方、HIVE和HadoopDB做了對比實驗。
3.2 數(shù)據(jù)入庫實驗
數(shù)據(jù)立方能夠快速進(jìn)行數(shù)據(jù)入庫同時實時建立索引,相對于基于傳統(tǒng)數(shù)據(jù)庫的HadoopDB來說具有天然的優(yōu)勢,但由于HIvE在數(shù)據(jù)入庫的同時并沒有建立索引使其在查詢的過程中沒有優(yōu)勢。實驗結(jié)果如圖10所示。
圖10 數(shù)據(jù)入庫實驗
3.3 單表查詢實驗
對于簡單的單表查詢來說,數(shù)據(jù)量較小時,HadoopDB與數(shù)據(jù)立方的查詢速度都是比較快的,但在大數(shù)據(jù)量下,數(shù)據(jù)立方的高效分布式查詢更有優(yōu)勢,而HIVE的底層是基于MapReduce,所以速度較慢。實驗結(jié)果如下圖11所示。
圖11 單表查詢實驗
3.4 多表查詢實驗
在多表查詢方面,在小表與小表、大表與小表之間的關(guān)聯(lián)查詢,數(shù)據(jù)立方和HadoopDB都是較快的,但在大表與大表之間做關(guān)聯(lián)查詢時,數(shù)據(jù)立方相對于HadoopDB更快,而HIVE是最慢的。多表查詢實驗結(jié)果如圖12所示。
圖12 多表查詢實驗
3.5 并發(fā)查詢實驗
數(shù)據(jù)立方的每個節(jié)點支持200個并發(fā)查詢,同時每個查詢均是秒級響應(yīng),HadoopDB由于是SMS的中間層,由于MapReduce架構(gòu)本身的心跳機制而導(dǎo)致了較大的延遲,所以是很難達(dá)到秒級響應(yīng)的,HIVE的任務(wù)并發(fā)數(shù)取決于MapReduce的并發(fā)任務(wù)數(shù),所以會更低。實驗結(jié)果如圖13所示。
圖13 并發(fā)查詢實驗
3.6 線性擴展實驗
數(shù)據(jù)立方、HadoopDB和HIVE均支持線性擴展,而數(shù)據(jù)立方的擴展效率更高,即對系統(tǒng)的軟硬件做擴展后,性能也能夠達(dá)到類似線性的增長。實驗結(jié)果如圖14所示。
圖14 線性擴展實驗
4.結(jié)束語
Hadoop是一種流行的MapReduce計算模型的開源實現(xiàn),用于大規(guī)模數(shù)據(jù)集的并行化分析處理,并行數(shù)據(jù)庫是在單機數(shù)據(jù)庫基礎(chǔ)之上發(fā)展而來的數(shù)據(jù)庫集群,本文通過研究MapReduce技術(shù)、并行數(shù)據(jù)庫技術(shù)以及混合技術(shù)探討了一系列相關(guān)的大數(shù)據(jù)處理技術(shù),更深一步探索了基于分布式文件系統(tǒng)的并行計算架構(gòu)和分布式海量數(shù)據(jù)實時索引機制,以此為基礎(chǔ)并輔以其他技術(shù)形成了一個支持非結(jié)構(gòu)化、結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù)高效存儲,支持離線數(shù)據(jù)分析和在線專題應(yīng)用,支持結(jié)構(gòu)化數(shù)據(jù)與非結(jié)構(gòu)化、半結(jié)構(gòu)化數(shù)據(jù)之間的復(fù)雜計算的實時云計算數(shù)據(jù)庫數(shù)據(jù)立方。最后,本文通過實驗驗證了數(shù)據(jù)立方相對于其他系統(tǒng)的優(yōu)勢。
核心關(guān)注:拓步ERP系統(tǒng)平臺是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請注明出處:拓步ERP資訊網(wǎng)http://www.ezxoed.cn/
本文標(biāo)題:實時云計算數(shù)據(jù)庫——數(shù)據(jù)立方
本文網(wǎng)址:http://www.ezxoed.cn/html/consultation/10839714063.html