高級(jí)數(shù)據(jù)庫(kù)結(jié)課論文_第1頁(yè)
高級(jí)數(shù)據(jù)庫(kù)結(jié)課論文_第2頁(yè)
高級(jí)數(shù)據(jù)庫(kù)結(jié)課論文_第3頁(yè)
高級(jí)數(shù)據(jù)庫(kù)結(jié)課論文_第4頁(yè)
高級(jí)數(shù)據(jù)庫(kù)結(jié)課論文_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

題目:基于HBase的數(shù)據(jù)存儲(chǔ)與管理研究目錄TOC\o"1-5"\h\z摘要1一、概述1二、研究背景1三、HBase分布式數(shù)據(jù)庫(kù)21、HBase與Hadoop及其組件的關(guān)系22、HBase系統(tǒng)架構(gòu)33、HBase存儲(chǔ)結(jié)構(gòu)54、HBase數(shù)據(jù)模型9四、總結(jié)與建議12五、主要參考文獻(xiàn)12《高級(jí)數(shù)據(jù)庫(kù)技術(shù)》課程報(bào)告《高級(jí)數(shù)據(jù)庫(kù)技術(shù)》課程報(bào)告#一、概述近年來(lái)全球互聯(lián)網(wǎng)絡(luò)的發(fā)展網(wǎng)民數(shù)量、網(wǎng)絡(luò)應(yīng)用數(shù)量都呈現(xiàn)了激增的態(tài)勢(shì)。用戶逐漸由信息的被動(dòng)接收者轉(zhuǎn)變?yōu)樾畔⒌慕邮照吆椭圃煺?。整個(gè)互聯(lián)網(wǎng)生態(tài)系統(tǒng)中,用戶貢獻(xiàn)內(nèi)容成為數(shù)據(jù)的一個(gè)重要來(lái)源。除此之外,越來(lái)越多的數(shù)據(jù)在社交網(wǎng)站、電子商務(wù)網(wǎng)站、搜索引擎網(wǎng)站等物理分隔的服務(wù)器上不斷自動(dòng)生成。面對(duì)龐大的、結(jié)構(gòu)復(fù)雜的海量數(shù)據(jù)的存儲(chǔ)和讀取問題,傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)已經(jīng)無(wú)法滿足需求。此時(shí),云計(jì)算作為一種計(jì)算和存儲(chǔ)能力近乎無(wú)限、可靠性高、可伸縮性強(qiáng)的新技術(shù)迅速得到企業(yè)和學(xué)者們的重視。網(wǎng)絡(luò)將分散的計(jì)算機(jī)上的分布式數(shù)據(jù)庫(kù)連接起來(lái),用戶的請(qǐng)求通過(guò)所有節(jié)點(diǎn)來(lái)處理,大大提高了數(shù)據(jù)的讀寫能力。Hadoop就是一種用來(lái)存儲(chǔ)和處理海量數(shù)據(jù)的開源云計(jì)算系統(tǒng)。二、研究背景21世紀(jì)初,谷歌公司的幾位年輕研究人員用廉價(jià)PC搭建了大型的MPP系統(tǒng),成功解決了搜索引擎所需要的大型文件系統(tǒng)的管理和操作問題,隨后分別于2003年、2004年和2006年在操作系統(tǒng)兩個(gè)著名的學(xué)術(shù)會(huì)議SOSP和0SDI上發(fā)表了有關(guān)GFS(Google文件系統(tǒng))、MapReduce(編程環(huán)境)和BigTable(數(shù)據(jù)模型)的論文。這三篇奠基性的論文促成了Hado°p的誕生。2004年,CuttingD和CafarellaMJ根據(jù)GoogleLab論文實(shí)施,取名Hadoop。從Hadoop0.21開始HDFS和MapReduce成為獨(dú)立的子項(xiàng)目。MapReduce是分布式并行計(jì)算框架是Hadoop的核心。HDFS所起的作用就是使得每個(gè)服務(wù)器必須具備對(duì)數(shù)據(jù)的訪問能力。2006年,HBase(BigTable)分布式列存儲(chǔ)數(shù)據(jù)庫(kù)成為Hadoop子項(xiàng)目,它架構(gòu)在HDFS之上。同年,AnkurKhetrapal和VinayGanesh從技術(shù)要求、技術(shù)架構(gòu)、技術(shù)評(píng)價(jià)標(biāo)準(zhǔn)以及缺陷四個(gè)方面比較了HBase和Hypertable這兩種實(shí)現(xiàn)BigTable功能的開源數(shù)據(jù)庫(kù)的技術(shù)相似性、不同點(diǎn)和處理能力⑴。通過(guò)實(shí)驗(yàn)作者認(rèn)為Hypertable(0.9.12)在主節(jié)點(diǎn)上運(yùn)行時(shí)會(huì)相對(duì)不穩(wěn)定,在大于GB的數(shù)據(jù)讀入時(shí)尤為明顯。相比之下,HBase在單節(jié)點(diǎn)的運(yùn)行性能比Hypertable的可靠性更高。CraigFranke研究了基于HBase的分布式語(yǔ)義網(wǎng)數(shù)據(jù)管理系統(tǒng)[2]。隨著機(jī)器可理解的語(yǔ)義描述越來(lái)越多地應(yīng)用于服務(wù)搜索、發(fā)現(xiàn)和集成,網(wǎng)絡(luò)中的計(jì)算數(shù)據(jù)資源越來(lái)越多。作者研究和比較了云計(jì)算和傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)聚類技術(shù)基礎(chǔ)上的兩種方法RDF數(shù)據(jù)分布式管理,設(shè)計(jì)了一種基于HBase和MySQL簇的分布式RDF數(shù)據(jù)存儲(chǔ)和查詢方案,通過(guò)實(shí)證研究驗(yàn)證了所提出的算法是有效的,也說(shuō)明云計(jì)算在可擴(kuò)展的語(yǔ)義web數(shù)據(jù)管理方面有著巨大的潛力。ShojiNishimura設(shè)計(jì)了一種基于位置服務(wù)的可擴(kuò)展數(shù)據(jù)庫(kù)-MD-Hbase[3]。基于位置的服務(wù)和應(yīng)用的增長(zhǎng)產(chǎn)生了大規(guī)模的數(shù)據(jù),適用于這種數(shù)據(jù)的管理系統(tǒng)在滿足有效的實(shí)時(shí)分析之外還要能適應(yīng)數(shù)據(jù)的高插入率?;阪I值的存儲(chǔ)雖然能支持大規(guī)模的擴(kuò)展操作,但是不支持多屬性查詢功能,因此進(jìn)行了改進(jìn)。在鍵值存儲(chǔ)結(jié)構(gòu)之上建立多維索引結(jié)構(gòu),底層的鍵值存儲(chǔ)保證了系統(tǒng)的可插入性和容錯(cuò)性,上層的索引值保證了高效率的多維查詢處理。模型中的鍵值存儲(chǔ)原型即為HBase。國(guó)內(nèi)的學(xué)者也對(duì)HBase做了相關(guān)探索。崔杰研究了基于Hadoop的海量數(shù)據(jù)存儲(chǔ)平臺(tái)設(shè)計(jì)與開發(fā)⑷。海量的海洋科學(xué)數(shù)據(jù)經(jīng)過(guò)MapReduce計(jì)算以后按其K指作為行關(guān)鍵字,使用HBase分布式數(shù)據(jù)庫(kù)實(shí)現(xiàn)存儲(chǔ)和管理海量數(shù)據(jù)功能。范建永研究了基于HBase的矢量空間數(shù)據(jù)分布式存儲(chǔ)和一種基于MapReduce的并行構(gòu)建網(wǎng)格空間索引方法,大大加快索引構(gòu)建的處理速度⑸。李橋興利用分布式文件系統(tǒng)HBase的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)特征,采用可拓學(xué)基元對(duì)異構(gòu)數(shù)據(jù)集進(jìn)行整合處理并存儲(chǔ)在HBase數(shù)據(jù)庫(kù)⑹。通過(guò)提取數(shù)據(jù)特別是半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)的典型特征和屬性取值并轉(zhuǎn)換為基元后生成一個(gè)新的數(shù)據(jù)集,為數(shù)據(jù)分析和數(shù)據(jù)解釋提供一種新的實(shí)現(xiàn)方式。三、HBase分布式數(shù)據(jù)庫(kù)1、HBase與Hadoop及其組件的關(guān)系HBase是ApacheHadoop的數(shù)據(jù)庫(kù),能夠?qū)Υ笮蛿?shù)據(jù)提供隨機(jī)、實(shí)時(shí)的讀寫訪問。Hadoop是一個(gè)能夠?qū)A繑?shù)據(jù)分布式處理的平臺(tái),它的核心模塊有:HadoopDistributedFileSystem(HDFS)、HadoopMapreduce、HadoopHBase和HadoopZooKeeper。HBase對(duì)應(yīng)Google云計(jì)算系統(tǒng)的BigTable,目標(biāo)是存儲(chǔ)和處理大型數(shù)據(jù)。其他組件的主要作用、與Google云計(jì)算系統(tǒng)的對(duì)應(yīng)關(guān)系以及對(duì)HBase的支持作用如表3.1所示:表3.1Hadoop組件與HBase的關(guān)系Hadoop作用對(duì)HBase的支持對(duì)應(yīng)的Google云計(jì)算系統(tǒng)HadoopHDFS為整個(gè)Hadoop平臺(tái)提供數(shù)據(jù)的存儲(chǔ)、管理和錯(cuò)誤處理功能咼可靠的底層存儲(chǔ)支持GoogleGFSHadoopMapReduce基于映射和化簡(jiǎn)思想,支持大規(guī)模數(shù)據(jù)集的并行運(yùn)算高性能的計(jì)算能力GoogleMapReduceHadoopZooKeeper解決分布式集群中應(yīng)用系統(tǒng)的一致性問題。它能提供基于類似于文件系統(tǒng)的目錄節(jié)點(diǎn)樹方式的數(shù)據(jù)存儲(chǔ)穩(wěn)定服務(wù)和failover機(jī)制GoogleChubby基于以上各組件的支持,可將HBase數(shù)據(jù)庫(kù)的特點(diǎn)總結(jié)如下:1、高可靠性:作為底層存儲(chǔ)支持平臺(tái),HBase的很多數(shù)據(jù)存儲(chǔ)在HDFS平臺(tái)中。HDFS平臺(tái)以數(shù)據(jù)備份技術(shù)作為基礎(chǔ),提出了一種數(shù)據(jù)備份模型以適應(yīng)云存儲(chǔ)的需求。副本是一種提高數(shù)據(jù)訪問效率與容錯(cuò)性能力的技術(shù),能夠在原始數(shù)據(jù)丟失的時(shí)候,幫助用戶恢復(fù)數(shù)據(jù)。2、高效性:MapReduce的分布式編程模型系統(tǒng)來(lái)管理多個(gè)大規(guī)模計(jì)算過(guò)程,提高了計(jì)算效率。3、實(shí)時(shí)性:HBase作為數(shù)據(jù)存儲(chǔ)引擎能夠?yàn)榇髷?shù)據(jù)提供實(shí)時(shí)的讀/寫操作,但根據(jù)實(shí)際情況來(lái)看,HBase在實(shí)時(shí)的數(shù)據(jù)寫入性能上優(yōu)于查詢性能。2、HBase系統(tǒng)架構(gòu)HBase為主從式架構(gòu),由一個(gè)Master節(jié)點(diǎn)、多個(gè)Regionserver節(jié)點(diǎn)和客戶端3部分組成.Master節(jié)點(diǎn)作為HBase的中心,管理整個(gè)集群中的所有個(gè)Regionserver,監(jiān)控每個(gè)表服務(wù)器的運(yùn)行情況等⑺。Regionserver接收來(lái)自Master分配的子表、處理客戶端的讀寫請(qǐng)求、緩沖區(qū)回收、壓縮和分割Regionserver等功能。Client主要負(fù)責(zé)查找用戶子表所在的Regionserver地址信息。HBase系統(tǒng)中還包括一個(gè)用于監(jiān)控集群狀態(tài)的ZooKeeper集群。ZooKeeper集群保存著HBase數(shù)據(jù)庫(kù)元數(shù)據(jù)所在節(jié)點(diǎn)的IP地址,客戶端通過(guò)ZooKeeper集群找到元數(shù)據(jù),進(jìn)而找到需要訪問的Regionservero最后Regionserver還要和HDFS通信,將文件存儲(chǔ)在其中。圖3.1HBase系統(tǒng)架構(gòu)(1)Master節(jié)點(diǎn)HBase中可以存在多個(gè)Master節(jié)點(diǎn),但其中沒有單點(diǎn)問題。因?yàn)镠Base中可以啟動(dòng)多個(gè)HMaster,但通過(guò)Zookeeper的MasterElection即選舉機(jī)制保證總有一個(gè)Master運(yùn)行。Master節(jié)點(diǎn)不存儲(chǔ)HBase中的任何數(shù)據(jù),它負(fù)責(zé)HBase中表和Region的管理,具體如下:管理用戶對(duì)table的增、刪、改、查操作;為Regionserver節(jié)點(diǎn)分配Region,Region用來(lái)存儲(chǔ)HBase表中的數(shù)據(jù);對(duì)Regionserver進(jìn)行負(fù)載均衡;調(diào)整Region分布遷移已失效Regionserver上的Region到其他Regionservero(2)ZooKeeperZooKeeper是ApacheHadoop的一個(gè)正式子項(xiàng)目,它是一個(gè)分布式的、開源的分布式程序協(xié)調(diào)服務(wù),是GoogleChubby的一個(gè)開源實(shí)現(xiàn)。它提供一個(gè)了類似文件系統(tǒng)的層次命名空間,與文件系統(tǒng)不同的是,ZooKeeper的命名空間中的數(shù)據(jù)節(jié)點(diǎn)也可以有孩子節(jié)點(diǎn),就像文件系統(tǒng)中的一個(gè)文件同時(shí)也可以作為一個(gè)文件夾。HBase中ZooKeeper的作用有以下三個(gè):Master節(jié)點(diǎn)選舉,保證集群中只有一個(gè)Master節(jié)點(diǎn);存儲(chǔ)-ROOT-表地址、Master地址;監(jiān)控所有Regionserver的狀態(tài),RegionServer會(huì)把自己以Ephemera1方式注冊(cè)至到Zookeeper中,使得HMaster可以隨時(shí)感知到各個(gè)HRegionServer的健康狀態(tài),進(jìn)而將Regionserver的上線和下線信息實(shí)時(shí)通知Mastero(3)Regionserver節(jié)點(diǎn)Regionserver主要負(fù)責(zé)響應(yīng)用戶I/O請(qǐng)求,存儲(chǔ)表文件,向HDFS文件系統(tǒng)中讀寫數(shù)據(jù),是HBase中最核心的模塊。Master節(jié)點(diǎn)記錄了當(dāng)前所有Region的狀態(tài),包括已經(jīng)分配的Region分配給了哪些Regionserver,哪些Region還未分配。一個(gè)Region在任何時(shí)刻只能分配給一個(gè)Regionserver。當(dāng)客戶端請(qǐng)求寫數(shù)據(jù)時(shí),如果存在未分配的Region并且有一個(gè)Regionserver上有可用的空間,主控節(jié)點(diǎn)就將這個(gè)Region分配給該Regionserver并通知它,分配的Region會(huì)隨機(jī)生成一個(gè)Region標(biāo)示符與之對(duì)應(yīng)。Regionserver負(fù)責(zé)維護(hù)Master節(jié)點(diǎn)分配給它的Region,處理客戶端對(duì)Region的讀寫請(qǐng)求,Regionserver運(yùn)行在Hadoop集群中的DataNode節(jié)點(diǎn)上。Regionserver內(nèi)部管理了一系列Region對(duì)象,每個(gè)Region對(duì)應(yīng)了Table中的一個(gè)Region,Region中由多個(gè)Store組成。每個(gè)Store對(duì)應(yīng)了Table中的一個(gè)ColumnFamily的存儲(chǔ),每個(gè)ColumnFamily就是一個(gè)集中的存儲(chǔ)單元。(4)ClientClient主要有以下功能:使用HBaseRPC機(jī)制與HMaster和HRegionServer進(jìn)行通信Client與HMaster進(jìn)行通信進(jìn)行管理類操作Client與HRegionServer進(jìn)行數(shù)據(jù)讀寫類操作3、HBase存儲(chǔ)結(jié)構(gòu)在HBase中,RegionServer集群負(fù)責(zé)維護(hù)分配給它們的Region,響應(yīng)客戶端的數(shù)據(jù)讀寫請(qǐng)求。數(shù)據(jù)在RegionServer集群中的組織方式如圖3.2所示。由圖3.2可以看出HBase的存儲(chǔ)核心是由MemStore和StoreFile組成的。MemStore是SortedMemoryBuffer。用戶進(jìn)行寫操作時(shí),數(shù)據(jù)首先存入MenStore中,當(dāng)MenStore滿時(shí),HBase將其數(shù)據(jù)寫入文件中,這個(gè)文件的大小等于MenStore的閾值,這個(gè)文件即StoreFile。隨著用戶的寫操作不斷進(jìn)行,數(shù)據(jù)量不斷增加,StoreFile增長(zhǎng)到一定的閾值時(shí),觸發(fā)合并操作,多個(gè)StoreFile合并成一個(gè)StoreFile,同時(shí)進(jìn)行版本合并和數(shù)據(jù)刪除。合并操作后,StoreFile形成越來(lái)越大的StoreFile,單個(gè)StoreFile的大小超過(guò)一定閾值后觸發(fā)Split操作,把當(dāng)前的RegionSplit成2個(gè)Region,父Region下線,兩個(gè)新的子Region會(huì)被Master分配到相應(yīng)的Regionserver上,從而使得1個(gè)Region的壓力得以分流到2個(gè)Region上。具體操作過(guò)程如圖3.3所示。

StoreFilelStoreFile2StoreFile3StoreFile4StoreFilelStoreFile2StoreFile3StoreFile4圖3.3StoreFile的compact和split過(guò)程由此過(guò)程可知,HBase只是增加數(shù)據(jù),更新和刪除操作都是在合并階段進(jìn)行的。這樣用戶寫操作只需要進(jìn)入內(nèi)存即可立即返回,從而保證I/O高性能。HBase的所有數(shù)據(jù)文件都存儲(chǔ)在HadoopHDFS文件系統(tǒng)上,格式主要有兩種:HLog和HFile。(1)HLog在分布式環(huán)境中,系統(tǒng)的容錯(cuò)能力是一個(gè)很重要的指標(biāo)。在HBase中,一旦RegionServer意外退出,MemStore中的內(nèi)存數(shù)據(jù)就會(huì)丟失,因此引入了Hlog。HLog是一個(gè)預(yù)讀式日志(WriteAheadLogging)。每個(gè)RegionServer中都有一個(gè)HLog對(duì)象,每次用戶操作寫入MemStore的同時(shí)也會(huì)寫一份數(shù)據(jù)到Hlog文件。類比于面向關(guān)系數(shù)據(jù)庫(kù)的日志文件,當(dāng)HRegionServer意外終止后,HMaster會(huì)先處理遺留的HLog文件,ReplayHLog中的數(shù)據(jù)到MemStroe中,然后flush到StoreFile中,完成數(shù)據(jù)恢復(fù)。HLog文件結(jié)構(gòu)如圖所示:RegionARegionBRegionC11riFvrV1FHlogKeyHlogKeyHlogKeyKeyValueKeyValueKeyValue圖3.4HLog文件結(jié)構(gòu)HLog文件就是一個(gè)普通的HadoopSequenceFile。其中HLogKey中記錄了寫入數(shù)據(jù)的歸屬信息,包括表名、region名、順序號(hào)和寫入時(shí)間。順序號(hào)的起始值為0或者最近一次存入文件系統(tǒng)的順序號(hào)。HFileHFile是Hadoop的二進(jìn)制格式文件,實(shí)際上StoreFile就是對(duì)HFile做了輕量級(jí)包裝,即StoreFile底層就是HFile。HFile的存儲(chǔ)格式如下圖所示:DataDataDataMetaMetaFileInfodataindexmetaindexTrailerMagiKeyKeyKeyKeyKeyKeyKeycValueValueValueValueValueValueValue圖3.5HFile的存儲(chǔ)格式a)DataBlock:HBaseI/O的基本單元,存儲(chǔ)KeyValue數(shù)據(jù)。MetaBlock:可選快,保存BloomFilter信息等,BloomFilter可以用來(lái)判斷一個(gè)RowKey是否在這個(gè)HFile中。FileInfo:保存HFile的基本信息DataBlockIndex:DataBlock的索引,記錄每個(gè)DataBlock的起始位置、大小及DataBlock中的第一個(gè)RowKey。MetaBlockIndex:MetaBlock的索引,記錄每個(gè)MetaBlock的起始位置、大小等。Trailer:記錄FileInfo、DataBlockIndex和MetaBlockIndex的起始位置。當(dāng)讀取一個(gè)HFile文件時(shí),首先讀取Trailer塊,通過(guò)Trailer將DataBlockIndex的內(nèi)容保存到內(nèi)存中,這樣,當(dāng)檢索某個(gè)RowKey時(shí),HBase只需從內(nèi)存中找到RowKey所在的DataBlock,然后將這個(gè)DataBlock讀入內(nèi)存,進(jìn)而找到所需的RowKey。DataBlock的大小可以在創(chuàng)建表的時(shí)候通過(guò)參數(shù)指定,默認(rèn)值為64KB。通過(guò)上述讀取過(guò)程可以看到,DataBlock的大小將會(huì)對(duì)記錄的查詢操作產(chǎn)生一定的影響,較大的DataBlock有利于順序的scan操作,較小的DataBlock有利于隨機(jī)查詢。(3)KeyValue鍵值對(duì)分析KeyValue即“鍵-值對(duì)”是HBase數(shù)據(jù)存儲(chǔ)的核心,由圖3.6可以看至到,DataBlock中存儲(chǔ)的KeyValue是連續(xù)排列的,每個(gè)KeyValue對(duì)就是一個(gè)簡(jiǎn)單的byte數(shù)組。這個(gè)byte數(shù)組里面包含了很多項(xiàng),并且有固定的結(jié)構(gòu)。它包含四個(gè)字段,分別是KeyLength、ValueLength、Key和Value,其結(jié)構(gòu)如圖3.7所示。1Key1KeyValueValueLengthRowLengthRowColumnFamilyLengthColumnFamilyColumnQualifierTimeStampKeyTypeValue4B4B2B1B8B1B圖3.6KeyValue的結(jié)構(gòu)KeyLength和ValueLength:兩個(gè)固定的長(zhǎng)度,分別代表Key和Value的長(zhǎng)度Key部分:RowLength是固定長(zhǎng)度的數(shù)值,表示RowKey的長(zhǎng)度,Row字段存儲(chǔ)RowKey的名字ColumnFamilyLength是固定長(zhǎng)度的數(shù)值,表示Family的長(zhǎng)度ColumnFamily字段存儲(chǔ)列族名,ColumnQualifie字段存儲(chǔ)列名,TimeStamp和KeyType(Put/Delete)是兩個(gè)固定長(zhǎng)度的數(shù)值Value存儲(chǔ)二進(jìn)制數(shù)據(jù)。KeyValue作為一個(gè)整體不會(huì)被分割存儲(chǔ)到多個(gè)DataBlock中,即使一個(gè)KeyValue的大小超過(guò)了DataBlock的大小,它仍然被視作一個(gè)連貫的塊讀出。4、HBase數(shù)據(jù)模型關(guān)系型數(shù)據(jù)庫(kù)圍繞著表、列和數(shù)據(jù)類型來(lái)構(gòu)建數(shù)據(jù)模型的,數(shù)據(jù)的形態(tài)都有嚴(yán)格的規(guī)則。HBase的數(shù)據(jù)模型設(shè)計(jì)沒有嚴(yán)格的形態(tài),數(shù)據(jù)記錄的列可以不一致、大小不確定、可以沒有類型的半結(jié)構(gòu)化數(shù)據(jù)⑻。針對(duì)半結(jié)構(gòu)化數(shù)據(jù),HBase在設(shè)計(jì)邏輯模型時(shí)會(huì)影響到其物理模型的設(shè)計(jì)。同時(shí),物理模型的不同也會(huì)影響到邏輯模型。(1)邏輯模型HBase以表的形式存儲(chǔ)數(shù)據(jù)。表有行和列組成。列劃分為若干個(gè)列族(rowfamily),,列的定義為:vColumnFamily>:vqualifier>。由行和列所確定的單元格稱為cell,HBase的更新操作都有時(shí)間戳,對(duì)于每個(gè)cell,HBase將存儲(chǔ)指定個(gè)數(shù)的最新版本,客戶端默認(rèn)獲取最新版本的內(nèi)容。Cell沒有數(shù)據(jù)類型,只能存放字節(jié)數(shù)組(bytearray)。HBase中的表有3個(gè)基本的列,分別是RowKey、Timestamp和ColumnFamily,其中RowKey是主鍵,表中的各行按照RowKey的字節(jié)序排序。如表3.2所示為HBase表的邏輯視圖。表3.2HBase表的邏輯視圖RowKeyTimeStamp列族“contens"列族“anchor"n.WWWt9CNNt8CNN.comt6vhtml>deft5vhtml>abct3vhtml>…表3.2所示為HBase的表中的一行記錄,其RowKey為“n.www"。RowKey:行鍵,Table的主鍵,Table中的記錄按照RowKey排序。RowKey格式為字節(jié)數(shù)組,任何能夠轉(zhuǎn)換為字節(jié)數(shù)組的元素都可以作為RowKey,RowKey的大小并不固定,最大長(zhǎng)度為64KB。Timestamp:時(shí)間戳,用于管理cell的版本,當(dāng)向表中插入數(shù)據(jù)的時(shí)候HBase自動(dòng)生成TimeStamp,每個(gè)cel1中,不同版本的數(shù)據(jù)按照時(shí)間倒序排序,即最新的數(shù)據(jù)排在最前面。每次數(shù)據(jù)操作對(duì)應(yīng)的時(shí)間戳,可以看作是數(shù)據(jù)的versionnumberc)ColumnFamily:列簇,Table在水平方向有一個(gè)或者多個(gè)ColumnFamily組成,一個(gè)ColumnFamily中可以由任意多個(gè)Column組成,ColumnFamily必須在創(chuàng)建表的時(shí)候預(yù)先定義,一旦表創(chuàng)建完成列族就不能更改了,但列族中的列可以根據(jù)需要隨時(shí)添加即ColumnFamily支持動(dòng)態(tài)擴(kuò)展,無(wú)需預(yù)先定義Column的數(shù)量以及類型,因此HBase可以支持表中的兩行記錄有不同的列。在HBase中,對(duì)數(shù)據(jù)庫(kù)中的表的訪問控制、對(duì)內(nèi)存和磁盤的使用情況統(tǒng)計(jì)都是在列族層面進(jìn)行的。在HBase中,要訪問表中的記錄,只有三種方式:通過(guò)指定某一行記錄的RowKey訪問;通過(guò)指定RowKey的范圍訪問滿足條件的一些記錄;掃描整張表。(2)物理模型HBase中的表由行和列組成,列按照列族分組,這個(gè)在邏輯模型中表現(xiàn)為映射的映射。列族在物理模型中的表現(xiàn)為它的每個(gè)列族在硬盤上存儲(chǔ)為各自的HFile文件。這種物理上的隔離允許在列族底層HFile層面上分別進(jìn)行管理。HBase的數(shù)據(jù)按照鍵值對(duì)存儲(chǔ)在HFile里。HFile是二進(jìn)制文件,一行中一個(gè)列族的數(shù)據(jù)不一定存放在同一個(gè)HFile里,可能分散在多個(gè)HFile里。但是一行中列族的數(shù)據(jù)物理上是存放在一起的。如果單元內(nèi)沒有數(shù)據(jù),HBase是不會(huì)存儲(chǔ)任何東西的。當(dāng)執(zhí)行讀操作時(shí)HBase不需要讀出一行中所有的數(shù)據(jù),只需要讀取用到列族的數(shù)據(jù)。面向列意味著當(dāng)檢索指定單元時(shí),HBase不需要讀占位符記錄。這兩個(gè)物理細(xì)節(jié)有利于稀疏數(shù)據(jù)集合的高效存儲(chǔ)和快速讀取。上表3.2的邏輯視圖對(duì)應(yīng)的物理視圖如表3.3、表3.4、所示,表示物理上按列存儲(chǔ),保存了數(shù)據(jù)的多個(gè)版本。表3.3表的物理模型(列族contents)RowKeyTimeStamp列族“contents"列名值n.wwwt6contents:htmlvhtml>n.wwwt5contents:htmlvhtml>n.wwwt3contents:htmlvhtml>…表3.4表的物理模型(列族anchor)RowKeyTimeStamp列族“anchor"列名值n.wwwt9anchor:CNNn.wwwt8anchor:mv.look.caCNN.com由HBase表的邏輯模型和物理模型,可將其特點(diǎn)總結(jié)如下:a)大:一個(gè)表可以有上億行,上百萬(wàn)列b)面向列:面向列(族)的存儲(chǔ)和權(quán)限控制,列(族)獨(dú)立檢索。c)稀疏:對(duì)于為空(null)的列,并不占用存儲(chǔ)空間,因此,表可以設(shè)計(jì)的非常稀疏。5、HBase數(shù)據(jù)庫(kù)的應(yīng)用HBase數(shù)據(jù)庫(kù)在處理海量數(shù)據(jù)方面可以有效地改進(jìn)傳統(tǒng)數(shù)據(jù)庫(kù)對(duì)于過(guò)億記錄數(shù)據(jù)表的查詢、更新等操作效率低下的問題,減少對(duì)網(wǎng)絡(luò)資源的消耗、提高數(shù)據(jù)存儲(chǔ)效率和訪問的實(shí)時(shí)性。這些特點(diǎn)是HBase在以下領(lǐng)域的應(yīng)用有很好的前景:(1)社交網(wǎng)站的數(shù)據(jù)管理社交網(wǎng)站是如今互聯(lián)網(wǎng)系統(tǒng)數(shù)據(jù)來(lái)源的主要入口。信息由龐大的普通用戶群體提供數(shù)量大、結(jié)構(gòu)復(fù)雜,同時(shí)這些信息是具有標(biāo)簽性的含義的,傳統(tǒng)的數(shù)據(jù)庫(kù)很難對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)和處理。利用HBase,可以將不同的數(shù)據(jù)根據(jù)其語(yǔ)義特點(diǎn)放在不同的RegionServer,然后利用一個(gè)全局HBase保存全局信息,記錄所有的RegionServer、區(qū)域信息及信息內(nèi)容結(jié)構(gòu)等[9]。這樣通過(guò)對(duì)數(shù)據(jù)的整合處理可以實(shí)現(xiàn)簡(jiǎn)單的數(shù)據(jù)分類,提高查詢效率。(2)電子商務(wù)網(wǎng)站的數(shù)據(jù)管理伴隨著中國(guó)電子商務(wù)的發(fā)展海量的交易記錄隨之產(chǎn)生,如何有效地對(duì)這些交易記錄進(jìn)行存儲(chǔ)、查詢、分析是一個(gè)巨大的挑戰(zhàn)[8]。關(guān)系數(shù)據(jù)庫(kù)無(wú)法滿足對(duì)海量數(shù)據(jù)的高效率存儲(chǔ),也無(wú)法滿足動(dòng)態(tài)擴(kuò)展和高可用性的需求?;贖adoop平臺(tái),可以設(shè)計(jì)采用HBase數(shù)據(jù)庫(kù)的四層系統(tǒng),從而實(shí)現(xiàn)海量交易記錄查詢系統(tǒng)。(3)RDF數(shù)據(jù)存儲(chǔ)系統(tǒng)隨著語(yǔ)義網(wǎng)的提出RDF作為一種用于表達(dá)語(yǔ)義信息,能在應(yīng)用間交換且不喪失語(yǔ)義的通用框架得到了廣泛關(guān)注。RDF在提供靈活、強(qiáng)大的數(shù)據(jù)表述能力的同時(shí)也帶來(lái)了數(shù)據(jù)存儲(chǔ)和查詢的問題[11]。有研究人員就試圖將云計(jì)算與語(yǔ)義網(wǎng)結(jié)合起來(lái)以期解決海量RDF數(shù)據(jù)存儲(chǔ)和查詢難題。四、總結(jié)與建議大數(shù)據(jù)的產(chǎn)生將人們帶入了一個(gè)新的發(fā)展階段。企業(yè)面臨著新的挑戰(zhàn)和機(jī)遇,學(xué)者面臨著新的研究問題,他們都在試圖能乘上這輛快車。若要達(dá)到應(yīng)用級(jí),首先就要解決存儲(chǔ)級(jí)的問題,云計(jì)算平臺(tái)Hadoop應(yīng)運(yùn)而生,本文重點(diǎn)介紹了Hadoop系統(tǒng)的子項(xiàng)目HBase數(shù)據(jù)庫(kù)。首先介紹了Hadoop各組件與HBase的關(guān)系。作為Hadoop的核心技術(shù),HDFS和MapReduce對(duì)HBase有著重要的支持作用。HDFS是一個(gè)高容錯(cuò)的文件系統(tǒng),支持高吞吐量的應(yīng)用程序數(shù)據(jù)訪問,是Hbase的基礎(chǔ)層,對(duì)提高HBase的可靠性至關(guān)重要。MapReduce是一種適合對(duì)數(shù)據(jù)進(jìn)行分布式計(jì)算的計(jì)算模式,通過(guò)提供Map和Reduce函數(shù)完成數(shù)據(jù)的并行式計(jì)算。然后本文介紹了HBase的技術(shù)架構(gòu)和存儲(chǔ)架構(gòu)。在技術(shù)架構(gòu)上,HBase為主從式架構(gòu),由一個(gè)Master節(jié)點(diǎn)、多個(gè)Regionserver節(jié)點(diǎn)和客戶端3部分組成,本文詳細(xì)闡述了各節(jié)點(diǎn)的作用及ZooKeeper項(xiàng)目對(duì)集群的管理作用。在存儲(chǔ)機(jī)構(gòu)部分,先介紹了HBase的寫數(shù)據(jù)過(guò)程,然后介紹了HLog和HFile兩種存儲(chǔ)格式及兩種格式每個(gè)數(shù)據(jù)塊的含義。緊接著介紹了HBase的數(shù)據(jù)模型,從邏輯模型和物理模型

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論