您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据结构与算法 > 基于Impala的大数据查询分析计算性能研究
优先出版计算机应用研究第32卷--------------------------------基金项目:国家自然科学基金资助项目(61070015);广东省自然科学基金资助项目(S2011010001754、S2012030006242);广东省科技计划项目(2012B010100030)作者简介:郭超(1989-),男,广东汕头,硕士研究生,学士,主要研究方向为大数据、云计算;刘波,(1968-),男,教授,博士,主要研究方向为分布式计算系统;林伟伟,(1980-),男(通信作者),副教授,博士,主要研究方向为云计算、大数据、分布式系统.基于Impala的大数据查询分析计算性能研究*郭超1,刘波1,林伟伟2(1.华南师范大学计算机学院,广州510631;2.华南理工大学计算机科学与工程学院,广州510006)摘要:分析了Cloudera公司推出的Impala实时查询引擎原理与架构,并深入比较Impala与传统MapReduce的性能与特点,针对Impala进行复杂大数据处理方面的不足,提出了MapReduce与Impala结合的大数据处理方法,通过使用MapReduce对Impala的输入数据进行预处理,利用MapReduce在复杂作业处理方面的长处弥补了Impala在这方面的不足。最后对电信手机上网日志进行大数据查询和分析计算实验,实验结果表明,在大数据查询性能方面,基于MapReduce与Impala结合的大数据处理速度比传统MapReduce快了一倍。特别的,在迭代查询实验中,基于MapReduce与Impala结合的处理方法超过传统MapReduce方法八倍以上。基于MapReduce与Impala结合的处理方法在单次查询中的效率仍然高于传统MapReduce;而在迭代查询中,MapReduce与Impala结合的处理方法远远地超过了MapReduce。因此,MapReduce与Impala结合的处理方法能够发挥Impala和Hadoop各自的优点,让处理效率远超传统MapReduce,对于复杂的大数据处理的能力高于Impala。关键词:大数据;Hadoop;MapReduce;Impala;计算性能;查询分析中图分类号:TP文献标志码:AResearchonperformanceofbigdatacomputingandqueryprocessingbasedonImpalaGUOChao1,LIUBo1,LINWei-wei2(1.CollegeofComputer,SouthChinaNormalUniversity,Guangzhou510631,China;2.SchoolofComputerScience&Engineering,SouthChinaUniversityofTechnology,Guangzhou510006,China)Abstract:Firstofall;thispaperanalyzedtheelementsandarchitectureofImpalathebigdatareal-timequeryenginereleasedbyClouderarecently.ThenitcomparedthefeatureandefficiencybetweentraditionalMapReduceandImpala.Basedonthecomparison;itdiscoversthedisadvantagesofImpala.AfterthatitproposesamethodtoprocessdatawithbothMapReduceandImpala:usingMapReducetopreprocessincomingdataofImpala.ThismethodutilizestheflexibilityofMapReducetocoverthedisadvantagesofImpala.ComparativeexperimentsontheaccessloggeneratedbyChinaTelecom’sDailywaptrafficehaveprovedthatImpalaisevidentlyfasterthanTraditionalMapReduceandthecombinationofMapReduceandImpalawillruntwicefasterthanthetraditionalMapReduce.Especiallyiniterativeanalysis;thecombinationofMapReduceandImpalashowsitsoverwhelmingsuperioritytowardstraditionalMapReduce.Hence;itisconcludedthatthecombinationofMapReduceandImpalacanadopttheadvantageofeachother.ItoutperformtraditionalMapReduceonPerformanceandImpalaonflexibilityoncomplexdataprocessing.KeyWords:bigdata;hadoop;mapreduce;impala;;performance;dataquery;dataanalysis0引言近几年随着大规模数据处理的兴起,ApacheHadoop成为商业智能(BI)领域不可或缺的大数据处理工具,之后又推出的数据仓库Hive方便了大数据的日常处理。但是他们都有一个共同的缺点——处理大数据的时延较长,时延的问题在处理增长速度越来越快的大数据面前显得尤为明显。Google发布Dremel解决了这个问题,对外提供了实时大数据查询服务[1],并发表了有关Dremel的详细原理的论文[2]。文献[2]中提出的分布式查询方法被多家公司的产品借鉴,包括了Cloudera,之后Cloudera发布了Impala。与Hive相比,Impala的处理速度更快。相对于传统的MapReduce来说,Impala提供了高效率、便捷的大数据查询服务。但其使用HQL作为查询语言且不支持UDF,限制了它的表达能力,使其始终不能完全地替代MapReduce。MapReduce又因其使用Java为基础,以批处理的方式提供服务,它完成任务的时延已不能满足最新的大数据分析需求。然而,使用MapReduce可以提高Impala进行大数据复杂处理的能力。为此,针对Impala不能进行更复杂的数据处理2014-11-2409:27优先出版计算机应用研究第32卷的不足,本文提出了MapReduce与Impala结合的编程方式。而且,本文基于电信手机用户上网日志数据进行Impala大数据查询测试实验,并通过实验验证了提出的MapReduce与Impala结合的大数据处理方法的有效性。本文后续部分的组织结构为:在第2部分介绍了Impala的核心原理、基本架构,并与Hive和MapReduce做对比;然后在第3部分分析了Impala和MapReduce优缺点,提出MapReduce与Impala相结合的大数据处理方法的原理和具体实现方法;在第4部分用实验验证MapReduce、Hive和Impala数据处理的性能差距,以及对传统MapReduce大数据处理方法与提出的MapReduce与Impala结合的大数据处理方法进行性能比较;最后对全文进行了总结。1Impala实现原理与架构1.1Impala原理Impala是CDH(ClouderaDistributionwithApacheHadoop)的一个组件,是一个对大量数据并行处理(MPP-MassivelyParallelProcessing)的查询引擎。Impala是受到Google的Dremel原理的启发而开发出来的,除了Dremel的全部功能之外,它提供了Dremel不具备的Join功能,可以说是Dremel的超集。Impala与Hive都是构建在Hadoop之上的数据查询工具各有不同的侧重适应面,但从客户端使用来看Impala与Hive有很多的共同之处,如数据表元数据、ODBC/JDBC驱动、SQL语法、灵活的文件格式、存储资源池等。Impala与Hive在Hadoop中的关系如图1所示。Impala与Hive使用同一个元数据库,可以与Hive实现互访,并兼容大部分HQL语言。其基本原理是将一个查询根据数据所在位置分割成为子查询并在各个节点上运行,各个节点运行结果在汇总形成最终结果返回给客户端。Impala的每个节点都直接读取本地数据,并在本地执行子查询。在执行子查询时,节点之间交换数据完成各自的查询。具体的查询树分布化过程(如图2)为:(1)Impala接收到SQL查询首先生成SQL查询树,由查询树得知那些部分在本地运行,哪些部分可以在分布式系统上运行;(2)各个节点直接从HDFS的本地文件读取数据,各个节点上分别进行Join和GroupBy聚合。由各个节点把处理后的数据汇总发送到接受查询的节点上,由该节点进行汇总聚合及最后的排序截取工作[3];(3)Impala把SQL语句拆散成碎片分配到各个节点上,达到高速查询的目的。图1Impala与Hive的关系汇总聚合不可分布运行由下至上执行汇总Sort、LimitGroupBy部分聚合Join直接读取HDFS、HBase可分布运行图2HQL查询树注:根据[3]相关内容绘制Impala的优点有[3]:(1)互动式的查询,提供实时的大量数据并行处理;(2)兼容Hive的数据仓库,如以前使用过Hive则不必转移Hive历史数据;(3)使用与Hive相同的JDBC、ODBC驱动,故基于Hive的程序只有很小的改动就可以迁移到Impala上。Impala的局限有[3]:(1)暂不支持SerDe和用户自定义函数UDF、UDAF;(2)不能像Hive一样添加用户自定义的Mapper和Reducer;(3)查询过程中不支持容错处理,一旦有一个节点失败即整个查询失败;(4)暂不支持没有limit的orderby。1.2Impala的基本架构[4]Impala在每个节点上运行一个守护进程ImpalaDaemon,每个节点都可以接受查询。ImpalaDaemon内部由细分为Impala规划器(Planner),Impala协调器(Coordinator),Impala执行引擎(ExecEngine)。除此之外,Impala还需要运行状态存储器的守护进程(StateStoreDaemon),由状态存储器来保存和更新各个Impalad的状态以供查询。[3]具体过程如下图3所示:HiveMapReduceHDFS/HBASEImpalaHIVE元数据库优先出版计算机应用研究第32卷DataNode1HDFSHBASEImpala规划器Impala执行引擎Impala协调器Impala-SHELLJDBC/ODBCHUEHive元数据库HDFSMapReduce状态储存器NameNodeDataNode2HDFSHBASEImpala规划器Impala执行引擎Impala协调器DataNode3HDFSHBASEImpala规划器Impala执行引擎Impala协调器1244435356图3Impala架构图(注:本图根据[1]归纳绘制)1、用户通过Impala-Shell、JDBC/ODBC程序或HUE前端发送查询命令到一个Impala节点上。2、由Impala规划器接收和分析查询命令,它与NameNode上的Hive元数据库、HDFS元数据库和状态储存器进行通信,获得各部分数据的位置并将查询命令分割成小的子查询。(状态储存器保存了各个Impala节点的状态)3、Impala协调器将子查询分配到各个节点的Impala执行引擎上。
本文标题:基于Impala的大数据查询分析计算性能研究
链接地址:https://www.777doc.com/doc-4970855 .html