APP下载

基于MTR与Impala结合的数据查询优化研究

2016-10-18袁文翠舒昝赵建民

微型电脑应用 2016年6期
关键词:预处理编程框架

袁文翠,舒昝,赵建民

基于MTR与Impala结合的数据查询优化研究

袁文翠,舒昝,赵建民

以大数据的查询技术为中心,研究了当前一些主流的查询方法以及在此基础上的优化改进。MapReduce是一种编程模型,将存储在HDFS中的文件分块再整合以达到加速实现数据查询的目的,在此方法的基础上优化得出Map-Trim-Reduce编程模型,然后与Impala查询引擎相结合,利用Map-Trim-Reduce处理复杂数据的长处弥补Impala的短处,提前处理Impala的预处理数据,达到提高大数据查询效率的目的。

大数据;Map-Trim-Reduce;mpala

0 引言

随着科技信息时代的推进,数据在现代社会生活中承担着越来越重要的角色,面对着越来越多的数据,大数据概念应运而生。目前,利用传统的数据查询方法分析大数据已经显得力不从心,所以如何提高大数据环境下的数据处理及查询的效率,是目前新的研究方向。

通过查阅与本文研究相关的文献我们了解到,Map/Reduce是一种分布式计算框架,它将文件分块再整合以达到加速实现数据查询的目的。其中Map为映射过程,Reduce为归纳过程。首先,将众多文件分割成大小不等的若干数据块,大小由用户给定的参数控制,然后在启动程序拷贝。在所有的拷贝程序中,主程序委派空闲的工作站程序执行Map或者Reduce任务。当所有的Map、Reduce任务都完成的时候主程序Master激活用户程序,Map/Reduce返回用户程序的调用点[1]。Impala是一个对大数据进行并行处理的查询引擎,Impala支持多种方法与自身交互,主要通过JDBC、ODBC和Thrift接口实现互动式的查询,因此可以使用与Hive相同的JDBC,ODBC驱动,兼容Hive的数据仓库,提供实时的大量数据并行处理[2][3]。

1 Map-Trim-Reduce编程模型

Map-Trim-Reduce编程模型,是基于Map/Reduce之上,加以改进和优化,比它具有更好的查询性能,并且可扩展性良好。在Map/Reduce框架中,如果数据量很大,从巨大的中间结果中抽取k个最佳结果便会给Reducer带来负担,导致性能的瓶颈,为了突破此瓶颈,提高Top-k查询速度,引出了MTR(Map-Trim-Reduce)框架,将原有的两个阶段分为3个阶段,即Map,Trim,Reduce阶段。在Mapper后添加对应的Trimer,用来剪切掉不可能是结果的数据,从而使得查询的中间结果能够在Map之后就得以优化。

在Hadoop平台中,Map-Trim-Reduce框架还拥有一个辅助接点Observer,其作用有3点:第一,接收Mapper发来的中间输出结果;第二,根据中间结果和规则,计算出一个全局阈值T,类型与中间输出结果的Value类型相同;第三,将T值传给Trimer。

通过参考文献得知具体的算法分析如下:设Map阶段的时间开销是TMap,Reduce阶段的时间开销为TReduce,辅助接点接受的中间结果并计算得出的阙值的时间为TComputer,Tim阶段的时间开销为TTim,则MR框架下的总时间开销为TMap与TReduce之和,MTR框架下的总时间开销为TMap,TCompute,TTim及TReduce之和,即:

MR:TMR=TMap + TReduce

MTR:TMTR=TMap + TComputer + TTrim + TReduce

设数据量为N,裕兴的总时间都用T总表示,在进行Top-k查询时的平均效率分别为:

E=(N/T总)*k

通过实验可以得到TMTR<TMR,这充分说明MTR模型比MR模型整体的查询时间少,具有时间上的优势,所以我们应用MTR编程模型进行大数据的查询。

Top-k查询越来越广泛的应用在分布式检索系统中,在Hadoop平台中,Map/Reduce模型可做到提高并行计算的能力,但为了提高Top-k查询效率,在最短时间内排除无用的查询结果数据,我们设计了MTR模型来进行优化,以此达到了在大数据环境下提高数据查询效率的目的。

2 Impala的实现原理

Impala它的基本原理是将一个查询根据数据所在位置分割成子查询,各个节点直接从HDFS中读取本地文件进行子查询,并将所有节点的结果汇总,统一返回到接受查询的节点上,由该节点进行最后的排序截取工作。在这个过程中Impala把SQL语句拆分成碎片分配到各个节点上达到高速查询的目的。Impala最大的优点在于提供大量数据的并行处理,兼容Hive数据仓库和大部分HQL语言,可以与Hive实现互访,同时不必转移Hive中的数据,所以基于Hive的程序只需很小的改动就可以迁移到Impala上,这为我们将Map-Trim-Reduce与Impala的结合提供了条件。Impala与Hive的关系如图1所示。

图1 Impala与Hive的关系

3 Map-Trim-Reduce与Impala结合的数据查询优化

3.1Map-Trim-Reduce与Impala结合的原理

Map-Trim-Reduce与Impala各有优缺点,Map-Trim-

Reduce与Impala结合的方法进行编译来处理数据查询,相比于MapReduce与Impala结合更加高效,我们利用Map-Trim-Reduce的高灵活性和Impala的处理效率来进行复杂的大数据查询。在应用中,Map-Trim-Reduce对输入Impala的数据进行预处理,提前排除无用的结果和不可能的数据,然后在利用Impala进行相应的查询。这里值得一提的是,在处理查询同一个结果的作业时,由于Map任务预处理后的数据是持久化在HDFS上的,所以Impala可以多次对中间结果进行查询,不需要在像MapReduce一样多次执行前面的Mapper预处理,这极大的提高了数据处理的工作效率。

3.2Map-Trim-Reduce与Impala结合的数据处理实现方法。

在Impala上建立外部表通过Map-Trim-Reduce框架进行预处理来查询数据。在Map-Trim-Reduce程序中,MapReduce框架直接从HDFS上读取本地数据,通过Trim提高Top-K查询效率,排除不可能的结果,再利用Imapla中HQL查询本身包含的Join语句来处理Map-Trim-Reduce框架中多个数据集连接不直观的限制问题,避免了编程中繁琐的实现过程。

Map-Trim-Reduce与Impala结合的实现方法如图2所示:

图2 Map-Trim-Reduce与Impala结合工作图

由上图所示,Map-Trim-Reduce通过任务调度器将HDFS中的数据块元数据读取,按顺序执行Map,Trim,Reduce阶段,完成预处理任务后,交由Impala进行查询操作。Impala的查询与Map-Trim-Reduce框架是分离的,Map任务的中间结果可以存储在HDFS上,以供Impala多次读取并进行查询已经由Map-Trim-Reduce优化过的中间结果,这样在数据节点间的传输流量很少,且读写磁盘的次数也限制在Map和Impala的读写过程中,减少了Shuffle过程中不必要的I/O操作,节省了I/O磁盘的空间资源。多次利用中间结果对于迭代同一个中间结果的查询效率也明显高于Map-Trim-Reduce。

3.3Map-Trim-Reduce与Impala结合的实验分析

用Map-Trim-Reduce和Map-Trim-Reduce与Impala结合各自实现域名统计排序,比较运行时间的平均值。参考文献[4]的方法进行Map-Trim-Reduce调试,CDH文档搭建和运行平台参考文献[5]实现。

首先,Map-Trim-Reduce分割域名。由Mapper分割成以下部分记录:

进行域名统计排序。这一步可用Map-Trim-Reduce的Map结果自动按key排序功能实现。实现的伪代码如下:

MapTrimReduce分割域名:

String url=cell[8].trim();

分别进行URL分割和host分割

String[] url_spilt=url.split(“/”);

String[] hostspilt=host.split(“\.”);

StringBuffer hostacc=new StringBuffer();

for(int i=hostspilt.length-1;i>0;i--)

{ hostacc.insert(0,hostspilt[i].trim());

Context.write(new Text(hostacc.toString)),new IntWritable(1));

Hostacc.insert(0,”.”);}hostacc.insert(0,hostspilt[0]);

Context.write(new Text(hostacc.toString()),new IntWritable(1));

If(url_spilt.length>1)

Context,write(new Text(url),new IntWritable(1));

下面是Map-Trim-Reduce与Impala结合实现的关键代码。Mapper应用以上方法对输入Impala数据进行预处理。接下来利用Impala带limit的order by进行查询:

Creat external table hostcount(host string,num int) row form

Delimited fields terminated by’\t’ location’/user/root/hostcount’

Select host,count(*)as nums from hostcount group by host order by

Nums desc limit 100;

Map-Trim-Reduce与Map-Trim-Reduce+Impala的实验耗时结果由图3所示:

图3 实验时间对比

可见,在执行效率方面后者远远比Map-Trim-Reduce程序提高了一倍。Map-Trim-Reduce与Impala结合的方法能够有效的缩短任务的执行时间,提供高效的查询并保持Map-Trim-Reduce编程的灵活性。

4 总结

随着大数据时代的到来,传统数据查询方法的效率都遇到了瓶颈。为了更好的适应当前的环境,提高工作效率,我们研究发现Map-Trim-Reduce与Impala结合可以大大提高面对大数据处理的查询效率。当然,由于条件有限,可以扩展和优化的地方还有很多,随着时代的发展与科技的进步,在这方面的研究必定还会有突破性的进展。

[1] 陈勇.基于Hadoop平台的通信数据分布式查询算法的设计与实现:[D].北京:北京理工大学,2009

[2] 齐方方.海量数据存储和准实时查询系统设计与实现:[D].四川:西南石油大学,2015

[3] 郭超,刘波,林伟伟.基于Impala的大数据查询分析计算性能研究:[J].计算机应用研究,2015,32(5):2

[4] 吴秀娟.基于NoSQL框架的数据查询技术的应用研究.[D]南京:南京邮电大学,2014

[5] Cloudera Company.CDH5和Impala文档[EB/OL]. http://www.cloudera.com/content/www/en-us/documentat ion/enterprise/latest/topics/impala.html

Research on Data Query Optimization Based on MTR and Impala

Yuan Wencui, Shu Zan, Zhao Jianmin
(College of Computer and Information Technology, Northeast Petroleum University, Daqing 163318, China)

This paper takes the large data query technology as the center, and researches some main current query methods and the optimization based on them. MapReduce is a programming model, which integrates the file blocks stored in the HDFS to achieve the purpose of accelerating the realization of data query. Based on this method, an improved Map-Trim-Reduce programming model is obtained, and then it is combined with the Impala query engine. Use Map-Trim-Reduce to deal with the advantages of complex data to make up for the shortcomings of Impala, and deal with the Impala preprocessing data, so as to improve the efficiency of large data query.

Big Data; Map-Trim-Reduce; Impala

TP312

A

1007-757X(2016)06-0029-03

2016.02.07)

中国石油科技创新基金研究项目(2013D-5006-0203);黑龙江省科技攻关项目(GZ09A120);黑龙江省教育厅科学技术研究项目(12521050)。

袁文翠(1970-),女,东北石油大学,计算机与信息技术学院,副教授,硕士,研究方向:大数据、数据挖掘,大庆,163318

舒 昝(1991-),男,东北石油大学,计算机与信息技术学院,硕士生,研究方向:大数据、数据挖据,,大庆,163318

赵建民(1973-),男,东北石油大学,计算机与信息技术学院,副教授,硕士研究生导师,研究方向:工作流,数据挖掘,大庆,163318

猜你喜欢

预处理编程框架
求解奇异线性系统的右预处理MINRES 方法
框架
编程,是一种态度
元征X-431实测:奔驰发动机编程
编程小能手
广义框架的不相交性
纺织机上诞生的编程
基于预处理MUSIC算法的分布式阵列DOA估计
浅谈PLC在预处理生产线自动化改造中的应用
关于原点对称的不规则Gabor框架的构造