Hive架构

Hive架构

前面我们讲解了hive是什么,下面我们接着来看一下hive的架构。

hive在hadoop生态系统的位置

在讲解hive的架构前,我们先看一下hadoop的生态系统图,看一下hive到底在hadoop生态系统中占据着什么位置。

Hive架构

这张图上所有的框架我们在后续都会给大家介绍。
通过上图,我们可以看到hive的下面是yarn、MapReduce、HDFS,这和我们对hive的定义是一样的。在hive的右侧是Hbase,这就说明hive可以和HBase进行集成。可以看到hive在整个hadoop生态系统中还是占据着比较重要的位置的。

hive架构

Hive架构

我们先看这张图的蓝色部分,我们可以看到这就是MapReduce和HDFS,这一部分我们就比较熟悉了。
在回想下hive的本质,就是讲HQL语句转换成MapReduce程序进行在yarn上执行。那么现在底层的MapReduce和HDFS我们清楚了。那用户是如何提交HQL语句到hive的呢?
这就是上图中的右上部分,用户可以通过cli(命令行)或者java调用jdbc的方式通过Hive的驱动将HQL提交给Hive。
hive在接收到HQL语句时要进行以下四部的处理:

  1. 将HQL语句进行解析
  2. 对已经解析的进行优化处理。
  3. 根据优化的结果生成一个物理的计划。
  4. 将物理的计划提交给yarn进行执行。
    通过以上这几个步骤,hive就完成了他的工作,接受用户提交的HQL语句,将其转换成MapReduce程序进行执行。

我们看到上图的左侧还有个MetaStore,这个是什么呢?这个就是hive的元数据。我们来解释下什么是元数据。我们知道hive是讲一定的日志数据转换成数据表的形式,那是不是需要记录表的名字与存储在HDFS文件系统上文件的对应关系,是不是需要知道每一个列数据的名称。这些就组成了hive的元数据。hive通过查找元数据才能清楚的知道要去查找那个文件等等。
元数据默认存储在自带的derby数据库中,推荐使用MySQL存储Metestore。

hive的优势

  1. 操作接口采用类SQL语法,提供快速开发的能及(简单、容易上手)
  2. 避免了去写MapReduce,减少开发人员的学习成本
  3. 统一的元数据管理,可与impala/spark等共享数据
  4. 易扩展(HDFS+MapReduce),可以扩展集群规模;支持自定义函数

使用场景

  1. 数据的离线处理:比如,日志分析,海量结构化数据离线分析
  2. Hive的执行延迟比较高:hive常用于数据分析的,对实时性要求不高的场合
  3. Hive优势在于处理大数据,对于处理小数据没有优势,因为Hive的执行延迟比较高

相关推荐