大数据环境下数据的查询优化研究

2015-03-20 04:22卫长安
长治学院学报 2015年5期
关键词:长治分区分布式

卫长安

(长治职业技术学院 信息工程系,山西 长治 046000)

大数据环境下数据的查询优化研究

卫长安

(长治职业技术学院 信息工程系,山西 长治 046000)

文章以Hbase为数据管理工具,重点研究在HBase上采用分布式处理的方式进行数据查询优化,保证数据查询的反馈时间。研究对海量数据从传统数据库软件迁移到大数据平台上具有重要意义。

大数据,数据查询,HBase,分布式处理

1 引言

大规模数据的存储是一个必然的发展趋势。如何设计数据的存储以便查询是需要重点研究的问题。尤其随着结构化与非结构化数据的快速增长,传统的关系数据库已经不能满足大规模存储、实时性反馈的要求。分布式存储是云计算中的首要任务。在分布式存储的基础上,还要求对大规模数据的查询实现实时性反馈。

目前,应用比较广泛的分布式计算平台是Hadoop,Hadoop框架中的HDFS可对大规模数据存储,MapReduce是支持分布式处理的计算模型。HBase是一个高稳定性,面向列存储的数据仓库,支持分布式存储,可运行在Hadoop框架上。

HBase通过Hadoop中的MapReduce来处理HBase中的数据。大规模数据下的分布式查询对大数据的处理具有重要意义,文章主要研究在分布式数据仓库HBase中的数据分布式查询。

2 基于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和时间来标记一条数据,从而提高查询效率。

3 总结

大数据存储在未来的发展中成为一项重要的技术。文章在大数据背景下,研究了在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—)男,山西长治人,硕士,主要从事计算机硬件及网络研究。

猜你喜欢
长治分区分布式
贵州省地质灾害易发分区图
上海实施“分区封控”
长治:考察调研 绿色防控
山西长治:“三级联动”保“三秋”生产
当当鼓
长治至临汾高速公路开通
浪莎 分区而治
分布式光伏热钱汹涌
分布式光伏:爆发还是徘徊
大空间建筑防火分区设计的探讨