基于hadoop平台海量数据的快速查询与实现

2016-10-18 21:17褚福银张林何坤鹏
电脑知识与技术 2016年21期

褚福银+张林+何坤鹏

摘要:随着互联网技术的发展,人类产生的数据量正在呈指数级增长,Hadoop作为大数据领域的常用工具,在现代生活中发挥着至关重要的作用。Hive是基于Hadoop的一个数据仓库工具,在做查询统计分析时最终翻译成Hadoop平台上的MapReduce程序运行,当数据量不断增大时,就会使得查询效率[5]下降。该文就此提出了一种Hive与Spark结合的方案,将Hive的查询作为Spark的任务提交到Spark集群上进行计算,利用Spark的特性提高Hive 查询性能。该研究首先理论阐述了Hive与Spark各自的工作机制,然后介绍Hive_Spark原理,最后通过做实验,对实验结果进行对比,分析,从而验证Hive_Spark提高了查询效率,对大规模数据处理具有一定参考意义。

关键词:Hadoop;Hive;Spark;查询;海量数据

中图分类号:TP31 文献标识码:A 文章编号:1009-3044(2016)21-0003-03

Abstract: With the development of Internet technology, The amount of data generated by humans is growing exponentially. Hadoop as a common tool in the field of big data, play a vital role in modern life. Hive is a data warehouse tools based on Hadoop, when doing statistical analysis queries eventually translated into Hadoop program running on the platform, when increasing amounts of data, it makes the query efficiency will be reduced. In this paper, we propose a Hive and Spark combination of the program, the Hive query as the task of Spark to submit to the Spark cluster computing, using the characteristics of Spark to improve the performance of Hive query. This research firstly theory elaborated the Hive and Spark their working mechanism, and then this paper introduces the principle of Hive_Spark finally by doing experiment, compared with the result of the experiment and analysis, to validate Hive_Spark improve the query efficiency, for large-scale data processing has a certain reference significance.

Key words: Hadoop; Hive; Spark; Data query; Mass data

1 引言

随着大数据时代的到来,数据量的急速增长以及对数据实时查询的迫切需求使得传统的数据仓库引擎难以满足企业对大数据存储与分析的需求。Hadoop[3-4] 作为一种开源的架构凭借其低成本、可伸缩性和高容错性等优点开始取代传统数据仓库[8],采用 MapReduce 编程模型可以对海量数据进行有效分割和合理分配。hive是基于Hadoop的一个数据仓库工具, 提供了类似SQL的查询接口,但是由于Hive[13]的执行引擎是将SQL编译成一系列的MapReduce作业来运行,其性能代价较高。本文提出了一种hive_spark的查询模式,spark本身是基于内存的迭代式计算,利用Spark的特性提高Hive 查询性能[12]。

2 Hive

2.1Hive系统架构

Hive是建立在Hadoop上的数据仓库基础构架[11],它提供了一系列的工具,以用来进行数据提取转化加载ETL,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。Hive定义了简单的类SQL查询语言,称为 HQL,它允许熟悉SQL的用户查询数据,方便熟悉MapReduce开发者的开发自定义的mapper和reducer来处理内建的mapper和reducer无法完成的复杂的分析工作。Hive是SQL解析引擎,它将SQL语句转译成M/R Job然后在Hadoop执行。

1) 用户接口主要有三个:CLI,Client 和 WUI。其中最常用的是CLI,Cli启动的时候,会同时启动一个Hive副本。Client是Hive的客户端,用户连接至Hive Server。在启动 Client模式的时候,需要指出Hive Server所在节点,并且在该节点启动Hive Server。 WUI是通过浏览器访问Hive。

2) Hive将元数据存储在数据库中,如mysql、derby。Hive中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等[10]。

3) 解释器、编译器、优化器完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在HDFS中,并在随后有MapReduce调用执行。