Hive --- 整体介绍

Hive简介

  Hive基于Hadoop的数据仓库,使用者可通过类SQL的命令查询统计,极大提升了Hadoop易用性,使用者不再需要编写提交MR任务。

The Apache Hive ™ data warehouse software facilitates reading, writing, and managing large datasets residing in distributed storage using SQL.

Hive与Hadoop生态

  Hive建立在Hadoop上,依赖于MR进行任务计算,依赖于YARN进行资源调度,依赖于HDFS进行数据存储,如下图所示:
这里写图片描述

Hive VS 传统数据库

  • 数据插入:Hive 支持批量导入;传统DB支持单条和批量插入;
  • 数据更新:Hive 不支持;传统DB支持;
  • 索引:Hive 支持有限的索引功能;传统DB支持;
  • 延迟:Hive 延迟高,通常在分钟级别;传统DB延迟在ms级别;
  • 扩展性:Hadoop集群扩展性良好;传统DB扩展性有限;

数据构建过程

这里写图片描述

Hive架构组成

Hive主要由以下三个模块组成:

  1. 用户接口模块,含CLI、HWI、JDBC、Thrift Server等,用来实现对Hive的访问。CLI是Hive自带的命令行界面;HWI是Hive的一个简单网页界面;JDBC、ODBC以及Thrift Server可向用户提供进行编程的接口,其中Thrift Server是基于Thrift软件框架开发的,提供Hive的RPC通信接口。
  2. 驱动模块(Driver),含编译器、优化器、执行器等,负责把HiveQL语句转换成一系列MR作业,所有命令和查询都会进入驱动模块,通过该模块的解析变异,对计算过程进行优化,然后按照指定的步骤执行。
  3. 元数据存储模块(Metastore),是一个独立的关系型数据库,通常与MySQL数据库连接后创建的一个MySQL实例,也可以是Hive自带的Derby数据库实例。此模块主要保存表模式和其他系统元数据,如表的名称、表的列及其属性、表的分区及其属性、表的属性、表中数据所在位置信息等。
    这里写图片描述

Hive HA解决方案

  在Hive HA中,在Hadoop集群上构建的数据仓库是由多个Hive实例进行管理的,这些Hive实例被纳入到一个资源池中,由HAProxy提供统一的对外接口。客户端的查询请求,首先访问HAProxy,由HAProxy对访问请求进行转发。HAProxy收到请求后,会轮询资源池中可用的Hive实例,执行逻辑可用性测试。如果某个Hive实例逻辑可用,就会把客户端的访问请求转发到Hive实例上;如果某个实例不可用,就把它放入黑名单,并继续从资源池中取出下一个Hive实例进行逻辑可用性测试。对于黑名单中的Hive,Hive HA会每隔一段时间进行统一处理,首先尝试重启该Hive实例,如果重启成功,就再次把它放入资源池中。由于HAProxy提供统一的对外访问接口,因此,对于程序开发人员来说,可把它看成一台超强“Hive”。
这里写图片描述
参考:

  1. https://zhuanlan.zhihu.com/p/25608332