Hive原理与工作机制

Hive原理与工作机制

目录

    • Hive原理与工作机制
  • 一、Hive是什么?
  • 二、Hive解决了怎样的问题
  • 三、HIve相关组件
    • 1.服务端组件
    • 2.客户端组件
  • 四、hive查询执行过程

一、Hive是什么?

hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。

二、Hive解决了怎样的问题

在Hadoop项目的众多大数据组件中,HDFS解决了文件分布式存储问题,MapReduce解决了文件处理分布式计算问题,HBASE解决了分布式文件的存储与检索问题,注意HBASE的存储与HDFS的存储有所不同,简单来说就是HBASE是基于HDFS之上的,用户通过HABSE的命令行即可将数据存储到HDFS文件系统上,而不用详细了解HDFS的存储原理。
HBASE适合做单行数据或实时性数据的检索,但是对于数据的统计或者计算却无能无力,譬如,用户想统计几十亿行数据中出现了多少个HelloWorld,这时需要用户手写一堆MapReduce程序,这对熟悉SQL的程序员来说,非常不方便,如果能用SQL的方式查询分布式文件将大大减少程序人员的学习成本。
于是,Hive应运而生。

三、HIve相关组件

Hive原理与工作机制_第1张图片

1.服务端组件

Driver组件:该组件包括Complier、Optimizer和Executor,它的作用是将HiveQL(类SQL)语句进行解析、编译优化,生成执行计划,然后调用底层的MapReduce计算框架。

Metastore组件:元数据服务组件,这个组件存取Hive的元数据,Hive的元数据存储在关系数据库里,Hive支持的关系数据库有Derby和Mysql。作用是:客户端连接metastore服务,metastore再去连接MySQL数据库来存取元数据。

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

2.客户端组件

CLI:命令行界面。用户可以使用该接口创建表、查询表等操作。

JDBC/ODBC:Hive架构的JDBC和ODBC接口是建立在Thrift客户端之上,使用该接口实现程序语言对hive的调用。

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

四、hive查询执行过程

Hive原理与工作机制_第2张图片
1.Execute Query:用户将HQL语句发送到driver来执行。

2.Get Plan:Driver根据查询编译器解析query语句,验证query语句的语法,查询计划或者查询条件。

3.Get Metadata:编译器将元数据请求发送给Metastore(数据库)。

4.Send Metadata:Metastore将元数据作为响应发送给编译器。

5.Send Plan:编译器检查要求和重新发送Driver的计划。到这里,查询的解析和编译完成。

6.Execute Plan:Driver将执行计划发送到执行引擎。

6.1)Execute Job:hadoop内部执行的是mapreduce工作过程,任务执行引擎发送一个任务到资源管理节点(resourcemanager),资源管理器分配该任务到任务节点,由任务节点上开始执行mapreduce任务。

6.2)Metadata Ops:在执行引擎发送任务的同时,对hive的元数据进行相应操作。

7.Fetch Result:执行引擎接收数据节点(data node)的结果。

8.Send Results:执行引擎发送这些合成值到Driver。

9.Send Results:Driver将结果发送到hive接口。

本文参考:https://www.jianshu.com/p/afe2248aa86e

你可能感兴趣的:(hive,数据仓库,分布式)