衛(wèi)長安
(長治職業(yè)技術(shù)學(xué)院 信息工程系,山西 長治 046000)
大數(shù)據(jù)環(huán)境下數(shù)據(jù)的查詢優(yōu)化研究
衛(wèi)長安
(長治職業(yè)技術(shù)學(xué)院 信息工程系,山西 長治 046000)
文章以Hbase為數(shù)據(jù)管理工具,重點(diǎn)研究在HBase上采用分布式處理的方式進(jìn)行數(shù)據(jù)查詢優(yōu)化,保證數(shù)據(jù)查詢的反饋時間。研究對海量數(shù)據(jù)從傳統(tǒng)數(shù)據(jù)庫軟件遷移到大數(shù)據(jù)平臺上具有重要意義。
大數(shù)據(jù),數(shù)據(jù)查詢,HBase,分布式處理
大規(guī)模數(shù)據(jù)的存儲是一個必然的發(fā)展趨勢。如何設(shè)計數(shù)據(jù)的存儲以便查詢是需要重點(diǎn)研究的問題。尤其隨著結(jié)構(gòu)化與非結(jié)構(gòu)化數(shù)據(jù)的快速增長,傳統(tǒng)的關(guān)系數(shù)據(jù)庫已經(jīng)不能滿足大規(guī)模存儲、實(shí)時性反饋的要求。分布式存儲是云計算中的首要任務(wù)。在分布式存儲的基礎(chǔ)上,還要求對大規(guī)模數(shù)據(jù)的查詢實(shí)現(xiàn)實(shí)時性反饋。
目前,應(yīng)用比較廣泛的分布式計算平臺是Hadoop,Hadoop框架中的HDFS可對大規(guī)模數(shù)據(jù)存儲,MapReduce是支持分布式處理的計算模型。HBase是一個高穩(wěn)定性,面向列存儲的數(shù)據(jù)倉庫,支持分布式存儲,可運(yùn)行在Hadoop框架上。
HBase通過Hadoop中的MapReduce來處理HBase中的數(shù)據(jù)。大規(guī)模數(shù)據(jù)下的分布式查詢對大數(shù)據(jù)的處理具有重要意義,文章主要研究在分布式數(shù)據(jù)倉庫HBase中的數(shù)據(jù)分布式查詢。
2.1HBase平臺的介紹與配置
HBase的運(yùn)行需要Hadoop平臺的支持以及Zookeeper的服務(wù),Zookeeper可以監(jiān)控HBase的運(yùn)行狀態(tài),和任務(wù)的完成進(jìn)度。Hive可提供類似Sql的查詢服務(wù),將數(shù)據(jù)從傳統(tǒng)數(shù)據(jù)庫(如oracle,sql)導(dǎo)入到HBase中,在Hive中建立外部表,之后便可以通過Hive的接口來查詢數(shù)據(jù)。Hive的查詢語言為Hql查詢方法與Sql類似。查詢過程為分布式,與傳統(tǒng)方法相比,即提高了系統(tǒng)負(fù)載的能力,也提高了系統(tǒng)的時間效率。同時,當(dāng)Hbase中追加導(dǎo)入數(shù)據(jù)后,外部表不需要重新設(shè)置,即可完成更新后的表的查詢。
Hbase中的主鍵為RowKey,HBase的數(shù)據(jù)模型可以定義為一種稀疏的、長期存儲的、分布式的、多維排序的映射表。映射表中的一條記錄包括RowKey,Columnfamily和Timestamp三個部分。記錄中通過RowKey來作為唯一標(biāo)識,一個RowKey可以包含多個列,這多個列組成列族Column family。從物理存儲角度,一個列簇成員(列)在文件系統(tǒng)上都是存儲在一起。因?yàn)榇鎯?yōu)化都是針對列簇級別的,這就意味著,一個列簇的所有成員都是用相同的方式訪問的。通過RowKey和列名為唯一條件進(jìn)行檢索數(shù)據(jù)HBase以行記錄的形式將數(shù)據(jù)存放在表中,每行由一個RowKey唯一標(biāo)識并可以包含任意多個列。RowKey以數(shù)據(jù)字典方式方式進(jìn)行排列,所以,當(dāng)以RowKey作為條件進(jìn)行查詢時,查詢反饋時間短,查詢較快。當(dāng)查詢Columnfamily中的列時,并不能很好的顯示出優(yōu)勢,所以需要對RowKey中的列進(jìn)行設(shè)計,使其盡量包含查詢較為頻繁的屬性,這樣才能提高查詢速度。Hbase中的查詢速度還受到存儲分配的制約,使數(shù)據(jù)均衡的分布在各Region中能夠有效的提高查詢速度,下面將對HBase中RowKey的散列與預(yù)分區(qū)設(shè)計進(jìn)行研究。
2.2HBase Rowkey的優(yōu)化設(shè)計
Rowkey是行的主鍵,而且HBase只能通過Rowkey,或者一個Rowkey范圍即scan來查找數(shù)據(jù)。所以Rowkey的設(shè)計是至關(guān)重要的,關(guān)系到你應(yīng)用層的查詢效率。Rowkey是以字典順序排序的。下面通過對Rowkey的散列和預(yù)分區(qū)設(shè)計來達(dá)到在HBase查詢的優(yōu)化處理。
Rowkey的散列原則為:如果Rowkey是通過時間戳進(jìn)行排序,應(yīng)注意避免將時間戳放在高位字段,將Rowkey的高位作為散列字段,由程序循環(huán)生成,低位放時間戳,這樣將提高數(shù)據(jù)均衡分布在每個Regionserver以便負(fù)載均衡,提高查詢速度。如果沒有散列字段,首字段將是以時間戳表示的數(shù)據(jù),那么產(chǎn)生的新數(shù)據(jù)將會集中存儲在一個Regionserver上,提高了個別Regionserver的負(fù)載壓力,降低了查詢效率。
HBase是支持分布式存儲的數(shù)據(jù)倉庫,在集群中有Master和RegionServer,在各RegionServer中大規(guī)模數(shù)據(jù)分布式存儲,為了保證大規(guī)模數(shù)據(jù)在集群中分布的均衡性,這就涉及到數(shù)據(jù)的隨機(jī)散列與預(yù)分區(qū)。Region二個重要的屬性:startKey與endKey,表示這個Region維護(hù)的RowKey范圍。當(dāng)讀/寫數(shù)據(jù)時,如果RowKey落在某個start-end key范圍內(nèi),那么就會定位到目標(biāo)Region并且讀/寫到相關(guān)的數(shù)據(jù)。所以可以在數(shù)據(jù)導(dǎo)入到HBase集群之前,就為個Region設(shè)計好存儲范圍,即start-end Keys,同時引入數(shù)據(jù)隨機(jī)散列算法,例如利用哈希表散列算法,就能將數(shù)據(jù)均衡的存儲在各Region中。具體算法步驟設(shè)計如下:
(1)取樣,先隨機(jī)生成一定數(shù)量的Rowkey值,之后將取得的Rowkey放入到一個List中。
(2)結(jié)合預(yù)分區(qū)的Region個數(shù),建立相應(yīng)的預(yù)分區(qū),設(shè)計得到Region的存儲范圍。
(3)利用Hash算法將數(shù)據(jù)隨機(jī)散列到個Region分區(qū)內(nèi)。
2.3 建立索引提高查詢速度
通過在HBase上建立索引,可以為大數(shù)據(jù)的查詢提供高效的服務(wù),可通過建立空間索引的方式來達(dá)到需求,空間索引的生成依托Rowkey來完成。
索引可由唯一的Rowkey和若干列組成。在查詢時,可通過Rowkey同時從空間上的兩個維度對數(shù)據(jù)進(jìn)行查找,存儲時,可將空間上較為相近的對象聚集在一起,即存儲在一個Region上,并用Rowkey和時間來標(biāo)記一條數(shù)據(jù),從而提高查詢效率。
大數(shù)據(jù)存儲在未來的發(fā)展中成為一項(xiàng)重要的技術(shù)。文章在大數(shù)據(jù)背景下,研究了在HBase的數(shù)據(jù)存儲及查詢,首先對大數(shù)據(jù)的分布式查詢的背景和發(fā)展趨勢進(jìn)行了描述,之后引入了HBase并對其運(yùn)行的環(huán)境和配置進(jìn)行了介紹,提出了現(xiàn)階段HBase查詢還存在的問題,并對RowKey進(jìn)行設(shè)計,實(shí)現(xiàn)查詢優(yōu)化。文章重點(diǎn)研究了HBase中Rowkey的散列與預(yù)分區(qū)設(shè)計,通過對Rowkey的哈希散列與預(yù)分區(qū)、為表建立空間索引可使HBase快速反饋查詢。在今后的研究中,隨著Rowkey設(shè)計的研究深入,將會使分布式系統(tǒng)在數(shù)據(jù)查詢上更加展現(xiàn)出優(yōu)勢。
[1]Hbase Development Team.Hbase:bigtable-like structured storage for hadoop hdfs.http://wiki. apache.org/hadoop/Hbase.2009.
[2]Hbase Development Team.Hbase:bigtable-like structured storage for hadoop hdfs.http://wiki. apache.org/hadoop/Hbase.2009
[3]郭薇,郭菁,胡志勇.空間數(shù)據(jù)庫索引技術(shù)[M].上海:上海交通大學(xué)出版社,2006.
[4]李崇欣.分布式數(shù)據(jù)庫HBase快照的設(shè)計與實(shí)現(xiàn)[D].浙江大學(xué),2011.
[5]張旭中.分布式數(shù)據(jù)庫查詢優(yōu)化技術(shù)[D].電子科技大學(xué),2003.
(責(zé)任編輯 張劍妹)
TP311
A
1673-2015(2015)05-0056-02
2015—05—13
衛(wèi)長安(1981—)男,山西長治人,碩士,主要從事計算機(jī)硬件及網(wǎng)絡(luò)研究。