2019-04-14 15:50:06 +08:00

3.2 KiB
Raw Blame History

数据仓库——Hive

一、简介
二、Hive的体系架构
    2.1 command-line shell & thrift/jdbc
    2.2 Metastore
    2.3 执行流程

一、简介

Hive构建在Hadoop之上的可以将结构化的数据文件映射成表并提供类SQL查询功能分析查询SQL语句被转化为MapReduce任务在Hadoop框架中运行。

特点

  1. 简单、容易上手提供了类似sql查询语言hql使得精通sql 但是不了解 Java 编程的人也能很好的进行大数据分析;

  2. 其执行延迟高,不适合做实时数据的处理,但其适合做海量数据的离线处理;

  3. 灵活性高,可以自定义用户函数(UDF)和自定义存储格式;

  4. 为超大的数据集设计的计算存储扩展能力基于HadoopMR计算HDFS存储集群扩展容易;

  5. 统一的元数据管理可与prestoimpalasparksql等共享数据详见下文

二、Hive的体系架构

2.1 command-line shell & thrift/jdbc

我们可以用command-line shell和thriftjdbc两种方式来操作数据可以通过hive脚本的方式来操作也可以通过服务器通过thrift协议按照编译jdbc的方式就能够完成对hive里面的数据进行相应的操作。

2.2 Metastore

hive里的表名、表结构、字段名、字段类型、表的分隔符等信息就叫做元数据。Metastore是用来存储Hive的元数据默认元数据是存储在derby关系型数据库中但使用derby时只能有一个实例也就是说不能多个命令行接口同时使用通常使用MySQL代替derby。

这里还需要说明的是hive进行的是同一的元数据管理就是说你在hive上创建了一张表然后在prestoimpalasparksql 中都是可以直接使用的同样的你在prestoimpalasparksql中创建一张表在hive中也是可以使用的。

2.3 执行流程

  1. 客户端提交的sql后首先会通过Driver,然后通过SQL Parser进行sql解析首先把语句解析成抽象语法树之后才能转换成逻辑性执行计划
  2. 接着查询优化工具Query Optimizer对我们逻辑性执行计划进行优化,最终再生成物理性执行计划physical plan
  3. 在物理性执行计划中还包括序列化和反序列化SerDes用户自定义函数User Defined FunctionsUTFs
  4. 把最终的物理执行计划生成执行引擎Execution提交到mapreduce上去执行
  5. mapreduce的执行肯定有输入和输出那么这个输入输出可以是hadoop文件系统上的Hadoop Storage比如hdfshbase包括本地的文件也都是可以的。

参考资料

  1. Hive Getting Started
  2. Hive - 建立在Hadoop架构之上的数据仓库