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