1.Hive概述

Hive是基于Hadoop的开源的数据仓库框架,提供了一种类SQL的语言HQL来处理数据,使熟悉SQL的用户能查询数据。其原理是将HiveQL转换为MapReduce任务,从而完成海量数据的查询和分析。Hive适合于数据仓库应用程序,使用该应用程序进行相关的静态数据分析,不需要快速响应给出结果,而且数据本身不会频繁变化。HiveQL能通过实现用户自定义函数(UDF)、用户自定义聚合函数(UDAF)、用户自定义表函数(UDTF)进行扩展。
基于Hadoop,Hive具有以下特点:
  • 易于进行数据抽取、转换和加载(ETL)
  • 支持多样的数据存储格式
  • 能直接访问存储在HDFS上或者其他的数据存储系统(如HBase)上的文件
  • 多种使用方式,支持shell交互式命令、JDBC、WebUI等
 

2.Hive的优点和缺点

优点:
  • 支持海量数据的分析
  • 有良好的可扩展性
  • 有很好的容错性
  • 使用HiveQL就能实现复杂的MapReduce程序,减少了开发难度
缺点:
  • 延迟高,不能支持实时查询(MapReduce任务启动过程需要消耗较长的时间)
  • 不支持记录级别的更新、插入或者删除操作(联机事务处理OLTP)
  • 不支持事务
 

3.应用场景

Hive常用于以下方面:
  • 大量数据的非实时分析(日志的统计分析)
  • 数据挖掘(用户行为分析、关注点推荐)
  • 数据汇总(统计用户每天、每周的点击数)

4.架构

(1)用户接口
shell/CLI,jdbc/odbc,web UI
  • shell/CLI:终端命令行,采用交互式使用Hive命令行与Hive进行交互,常用
  • jbc/odbc:是Hive的基于JDBC操作提供的客户端
  • Web UI:游览器访问
(2)Driver
所有的命令和查询都会进入到Driver(驱动模块),通过该模块对输入进行解析编译,对需求的计算进行优化,然后按照指定的步骤执行(通常是启动多个MapReduce任务来执行)
  Hive 的核心是驱动引擎, 驱动引擎由四部分组成:
  • 解释器:解释器的作用是将 HiveSQL 语句转换为抽象语法树(AST)
  • 编译器:编译器是将语法树编译为逻辑执行计划
  • 优化器:优化器是对逻辑执行计划进行优化
  • 执行器:执行器是调用底层的运行框架执行逻辑执行计划
(3)Metastore(元数据存储)
是一个独立的关系型数据库(通常是一个Mysql实例)
元数据:存储在 Hive 中的数据的描述信息
Hive 中的元数据通常包括:表的名字,表的列和分区及其属性,表的属性(内部表和 外部表),表的数据所在目录
 
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐