hive概述

 

目录


HIVE 介绍与原理分析

  hive是Hadoop的数据仓储工具,用于存储和处理海量的结构话数据,使用sql解决mapreduce的编码问题,之前写了很多mapreduce,wordcout(单词统计)、排序、二次排序、最大值最小值、半连接、等等。对于传统的数据管理人员是困难的,而且耗时间facebook开源了一个数据仓储矿建。h可以通过sql解决mapreduce底层计算问题。当然hive底层使用的是mapreduce。那么这就意味着hive继承了mapreduce的优缺点(计算量大、延迟高)。

  hive数据存储在hdfs上,可以理解为在hive上建一个表,在hdfs就形成一个目录。这个目录存储着hdfs多个数据块的位置。从而查询到数据。

1.1 hive的优缺点

    1)Hive 使用类SQL 查询语法, 最大限度的实现了和SQL标准的兼容,大大降低了传统数据分析人员处理大数据的难度

    2)使用JDBC 接口/ODBC接口,开发人员更易开发应用;

    3)以MR 作为计算引擎、HDFS 作为存储系统,为超大数据集设计的计算/ 扩展能力;

    4)统一的元数据管理(Derby、MySql等)表存在哪 数据库在哪 和SQL相关的对象都保存在哪 保存在哪 谁创建的 啥时候修改,并可与Pig 、spark等共享;

弱点:

    1)Hive 的 HQL 表达的能力有限,比如不支持UPDATE、非等值连接、DELETE、INSERT单条等;

    2)由于Hive自动生成MapReduce 作业, HQL 调优困难;

    3)粒度较粗,可控性差,是因为数据是读的时候进行类型的转换,mysql关系型数据是在写入的时候就检查了数据的类型。

    4)hive生成MapReduce(shuffle失误)作业,高延迟,不适合实时查询。hive 最害怕的就是数据倾斜问题 --> OOM

1.2 与关系数据库的区别

     1)hive和关系数据库存储文件的系统不同,hive使用的是hadoop的HDFS(hadoop的分布式文件系统),关系数据库则是服务器本地的文件系统;

    2)hive使用mapreduce做运算,与传统数据库相比运算数据规模要大得多;

    3)关系数据库都是为实时查询的业务进行设计的,而hive则是为海量数据做数据挖掘设计的,实时性很差;实时性差导致hive的应用场景和关系数据库有很大的区别;

    4)Hive很容易扩展自己的存储能力和计算能力,这个是继承hadoop的,而关系数据库在这个方面要比Hive差很多。

1.3 hive的组成

hive由客户端与服务端组成的

服务端组件:

Driver组件:该组件包括编译、优化、和执行。他的作用是解析编译优化生成执行计划,然后使用mapreduce计算框架执行

metastore组件:元数据服务组件、这个组件存取hive的元数据,hive的元数据存储在 mysql。客户端链接metastore,metastore再去链接数据库存储元数据。这样做,一方面安全,一方面速度更快。
那么问题来了,什么是hive的元数据呢?包含哪些?

hive的元数据、包括表中字段以及属性还有表对应的hdfs目录。

客户端组件:

CLI:Command Line Interface,命令行接口。

JDBC/ODBC:Hive架构的JDBC和ODBC接口是建立在Thrift客户端之上。

WEBGUI:Hive客户端提供了一种通过网页的方式访问Hive所提供的服务。这个接口对应Hive的HWI组件(Hive Web Interface),使用前要启动HWI服务。

Thrift [θrɪft]  服务:Thrift是Facebook开发的一个软件框架,它用来进行可扩展且跨语言的服务的开发,Hive集成了该服务,能让不同的编程语言调用Hive的接口。

1.4 Hive查询的执行过程

1.hive命令或者执行的UI Web界面,发送到driver(任何数据驱动)执行

2.编译解析hsql,验证语法、查询的计划和条件

3.将请求发送给metastore ,metastore接收到请求去链接数据库获得元数据(表对应的hdfs目录、字段、属性等)

4.metastore将元数据返回给编译器

5.编译器根据元数据重新发送Driver计划,这时候解析编译完成

6.执行Driver计划

7.resourcemannager、分配任务资源任务节点、由任务节点执行mapreduce任务。

8.接收到datanado数据结果

9.执行引擎将合成的值返回给Driver

10.driver将结果返回到hive接口

11.显示数据

 

下面是详细的hive执行图:

hive概述