Hive总结


1、Hive概念

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

数据仓库

数据仓库(Data Warehouse, DW或者DWH),是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。它是单个数据存储,出于分析性报告和决策支持目的而创建。 为需要业务智能的企业,提供指导业务流程改进、监视时间、成本、质量以及控制简而言之,数据仓库是用来做查询分析的数据库,基本不用来做插入,修改,删除。(这就是数据仓库和数据库的区别,数据库只用来查询就是数据仓库)

Hive架构原理

Hive执行流程

Ÿ   编译器将一个Hive QL转换操作符

Ÿ   操作符是Hive的最小处理单元

Ÿ   每个操作符代表HDFS的一个操作或者一个MR作业

Operator

Ÿ   Operator是Hive定义的一个处理过程

Ÿ   Operator定义有:

protectedList <Operator<? extendsSerializable >> childOperators;

protectedList <Operator<? extendsSerializable >> parentOperators;

protectedboolean done;   //初始化值为false

Ÿ   所有的操作构成了Operator图,Hive基于这些图关系来处理limt, group by, join等操作。

操作符如下:

    TableScanOperator:扫描hive表数据
    ReduceSinkOperator:创建将发送到Reducer端的<Key,Value>对
    JoinOperator:Join两份数据
    SelectOperator:选择输出列
    FileSinkOperator:建立结果数据,输出至文件
    FilterOperator:过滤输入数据
    GroupByOperator:GroupBy语句
    MapJoinOperator:/*+mapjoin(t) */
    LimitOperator:Limit语句
    UnionOperator:Union语句

 

Hive工作流程

Ÿ   1.Execute Query:Hive界面如命令行或Web UI将查询发送到Driver(任何数据库驱动程序如JDBC、ODBC,等等)来执行。

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

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

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

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

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

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

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

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

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

Ÿ   10.Send Results:Driver将结果发送到Hive接口。

 

2、Hive三种方式区别和搭建

Hive中metastore(元数据存储)的三种方式:

a)内嵌Derby方式

b)Local方式

c)Remote方式

内嵌derby

这种方式是最简单的存储方式,只需要在hive-site.xml做如下配置便可

<?xml version="1.0"?>  

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>  

  

<configuration>  

  

<property>  

  <name>javax.jdo.option.ConnectionURL</name>  

  <value>jdbc:derby:;databaseName=metastore_db;create=true</value>  

</property>  

   

<property>  

  <name>javax.jdo.option.ConnectionDriverName</name>  

  <value>org.apache.derby.jdbc.EmbeddedDriver</value>  

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值