Hive——简介

Hive——简介

Hive 是基于 Hadoop 构建的一套数据仓库分析系统,它提供了丰富的 SQL 查询方式来分析存储在 Hadoop 分布式文件系统中的数据, 可以将结构化的数据文件映射为一张数据库表,并提供完整的 SQL 查询功能.可以将 SQL 语句转换为 MapReduce 任务进行运行,通过自己的 SQL 去 查询分析需要的内容,这套 SQL 简称 Hive SQL。

 

Hive的产生背景及介绍

产生背景

1)MapReduce编程的不便性(MapReduce编程十分繁琐,而且不方便修改)

2)HDFS上缺少Schema

 

Hive是什么

        1)由FaceBook开源,最初用于解决海量结构化的日志数据统计问题

2)构建在hadoop上的数据仓库

3)Hive定义了一种类SQL查询语言:HQL(类似sql但不完全相同)

4)通常用于进行离线数据处理(早期底层采用mapreduce)

5)底层支持多种不同执行引擎

6)支持多种不同的压缩格式、存储格式以及自定义函数

(Hive现在的底层执行引擎支持很多包括spark(Hive on spark),mapreduce(Hive on mapreduce)、Tez(Hive on Tez))

 

为什么要用Hive(Hive的优势)

        1)简单、容易上手(提供了类似sql查询语言hql)

2)为超大数据集设计的计算/存储扩展能力(MR计算,HDFS存储)

3)统一的元数据管理(可于Presto/Impala/SparkSQL等共享数据)

 

Hive的发展历程

 

    在Hive的发展历程中,不得不提的就是Stinger 

    Stinger分了几个阶段来做:Phase 1、2、3 ,Stringer.next;这几个阶段对Hive性能的提升是非常至关重要的

    07/08 facebook 

    13/05 hive-0.11 Stinger Phase 1 加入了ORC/HiveServer2 

    13/10 hive-0.12 Stinger Phase 2 ORC improvement(对ORC做了些改善) 

    14/04 hive-0.13 Stinger Phase 3 Tez/Vectorized query engine(加入了Tez和支持向量化的查询) 

    14/11 hive-0.14 Stinger.next Phase 1 Cost-based optimizer(Cost-based简称CBO)

    (The Stinger Initiative making Apache Hive 100 times faster)

 

Hive系统架构

    Hive——简介

Command-line shell:shell操作客户端

Trift/JDBC:Thrift代表一种协议/服务端启起来,客户端可以通过JDBC的方式去访问

Driver:接收sql做相应的分析处理:

    1)首先将SQL语句转换成抽象语法树(抽象语法树拿到是不能执行的)

     2)将抽象语法树转换成逻辑执行计划

     3)对逻辑执行计划进行优化,形成物理执行计划,优化之后才能够变成作业去运行

MapReduce:底层执行引擎

HadoopStorage:计算结果输出存储

Metastore:元数据存储

    1)metastore默认是存放在derby库中,通常现实中部署都是存放在mysql库中。其中生产上存储metastore的mysql要做HA.

     2)metastore包括的内容:

        1>:database: name,location,owner,name 

        2>:table: name,owner,location,column name/type/index,createtime

     3)hive的metastore是和Spark/impala通用的,例如在hive中创建一张表,在Spark/impala中也能使用,反之Spark/impala创建的表在hive中也能使用。

    

 Hive部署架构

Hive——简介

注意点:1)生产上部署时Hive的元数据存储的数据库要做主备。

              2)Hive不需要部署在每台机器上,一台就行,他就是一个客户端,解析你的sql生成mr交给yarn运行

上一篇:手动理解ARP协议


下一篇:《Kubernetes进阶实战》第四章《管理Pod资源对象》