1、Hive体系

1.1、Hive是什么?

Facebook开源用于解决海量结构化日志的数据统计,后成为Apache Hive作为一个开源项目。

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射成一张表,并提供类SQL查询功能;

使用HDFS存储;本质是将HQL转化成MapReduce程序,Hive的表其实就是HDFS上的目录和文件。

1.2、Hive的架构

1)用户接口:Client
  CLI(hive shell)、JDFB/ODBC(java访问hive)、WEBUI(浏览器访问hive)

2)Metastore

Hive的metastore就是元数据信息,通常我们会把元数据存储在MySQL数据库中,MySQL数据库本身有一套非常完善的保证数据安全性的机制,元数据信息主要包括库名、表名、表字段、以及表文件位置等信息。建议采用MySQL主从机制,对元数据库实时备份,另外,也可以结合一些冷备手段对hive的metastore元数据定期备份。

3)驱动器:Driver

解析器:将SQL字符串转换成抽象语法树AST,这一步一般都是第三方工具完成。

编译器:将AST编译成逻辑执行计划。

优化器:对逻辑执行计划进行优化。

执行器:把逻辑执行计划转换成可以运行的物理计划。对与hive来说就是MR、Spark。

4Hive数据仓库和MySQL数据库的异同

MySQL数据库可以用在 Online 的应用中,Hive 主要进行离线的大数据分析

查询语句 HQL SQL

存储位置 HDFS LocalFS

索引 hive 没有

Hive 执行 MapReducemysql 执行 Executor

延迟性 hive

可扩展性 hive

数据规模 hive

5)hive优点与使用场景

操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手)。
避免了去写MR,减少开发人员的学习成本。
统一的元数据管理,可以与impala/spark等共享元数据。
易扩展(HDFS+MapReduce:可以扩展集群规模;支持自定义函数)。
数据的离线处理;比如:日志分析、海量结构化数据离线分析。
Hive的执行延迟比较高,因此hive常用于离线数据分析的,对于实时性要求不高的场合。
Hive优势在于处理大数据,对于处理小数据没有优势,因为Hive的执行延迟比较高。