01-Hive概念及框架原理

目录

一、HIVE概念

二、Hive本质

三、Hive框架原理

1、组件

1.1、用户接口:Client

1.2、元数据:Metastore

1.3、HiveServer2

1.5、Hadoop

四、Hive组件间配合工作原理


一、HIVE概念

        Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能,主要完成海量数据的分析和计算。

        优点:简化数据开发流程及提高了效率。

二、Hive本质

        Hive是一个Hadoop客户端,用于将HQL(Hive SQL)转化成MapReduce程序。

  • (1)Hive中每张表的数据存储在HDFS;
  • (2)Hive分析数据底层的实现是MapReduce(也可配置为Spark或者Tez) ;
  • (3)执行程序运行在Yarn上。

三、Hive框架原理

1、组件

1.1、用户接口:Client

        Hive给客户提供了命令行客户端CLI语句(command-line interface)(CLI只能在安装了Hive的本地使用,用户进行建表等)、JDBC/ODBC

JDBC和ODBC的区别:

1)JDBC的移植性比ODBC好;(通常情况下,安装完ODBC驱动程序之后,还需要经过确定的配置才能够应用。而不相同的配置在不相同数据库服务器之间不能够通用。所以,安装一次就需要再配置一次。JDBC只需要选取适当的JDBC数据库驱动程序,就不需要额外的配置。在安装过程中,JDBC数据库驱动程序会自己完成有关的配置。)

2)两者使用的语言不同,JDBC在Java编程时使用,ODBC一般在C/C++编程时使用。

1.2、元数据:Metastore

        Metastore只提供元数据的访问接口,不负责存储数据(元数据通常保存在关系型数据库中),表到路径的映射关系保存在元数据中。

        元数据包括:用户创建的数据库(默认是default)、表名、表的拥有者、列/分区字段、表的类型(是否是外部表)、表的数据所在目录等。

1.3、HiveServer2

        提供JDBC或ODBC的访问接口和用户认证的相关功能。

1.4、驱动器:Driver

        当用户使用的是命令行客户端CLI时Driver就运行在客户端中,若使用的是JDBC/ODBC客户端Driver就运行在HiveServer2中;

        Driver负责编译和提交任务(将一条Hive的SQL语句即HQL编译成MapReduce的计算程序)。

具体工作:

        1)解析器(SQLParser):包含词法分析(对用户输入的sql字符串进行逐个字符扫描,根据预置规则识别关键词并生成特殊符号,每个符号成为一个token)和语法分析(对词法分析中输出的token进行分析,将token组合成短句,再将短句组合成一个完整的树状语法结构),将SQL字符串转换成抽象语法树(AST);

        2)语义分析(Semantic Analyzer):将AST进一步划分为QeuryBlock(先遍历解析器输出的抽象语法树,将AST中token划分成一个个的查询单元QeuryBlock(可以理解为子查询),并获取元数据信息(原表路径和目标表的路径)赋予查询单元QeuryBlock);

        3)逻辑计划生成器(Logical Plan Gen):将语法树生成逻辑计划;

        4)逻辑优化器(Logical Optimizer):对逻辑计划进行优化;

        5)物理计划生成器(Physical Plan Gen):根据优化后的逻辑计划生成物理执行计划(如生成的MapReduce等);

        6)物理优化器(Physical Optimizer):对物理执行计划进行优化(如使用map join优化);

        7)执行器(Execution):执行该计划,得到查询结果并返回给客户端。

1.5、Hadoop

        使用HDFS进行存储,可以选择MapReduce/Tez/Spark进行计算。

四、Hive组件间配合工作原理

        Hive给客户提供了命令行客户端CLI语句(command-line interface)(CLI只能在安装了Hive的本地使用,)、JDBC/ODBC,用户进行建表等;

        Metastore把创建的表的元数据信息保存到数据库中,如果用户在建表时指定了表的hdfs路径,且该hdfs路径下已经有文件,此时Hive表与hdfs文件的内容形成了映射关系;

        当用户执行了查询语句,编译和提交任务(将一条Hive的SQL语句即HQL编译成MapReduce的计算程序)的工作由Driver完成,Driver在编译HQL的过程中需要用到元数据信息(因为给Hive提供的是对表的操作,最终编译的MR程序需要输入路径,而表到路径的映射关系保存在元数据中);

        当Driver已经完成了编译任务(即得到可执行的MR程序),此时Driver会把任务提交到Yarn上运行;

        当MR启动之后会读取原表数据,执行后将计算结果写到目标表的路径或者写到临时目录中;若执行的是查询语句,则查询结果也会被拉取到Hive的客户端。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值