Hive

Hive是由Facebook实现并开源,基于hadoop的一个数据仓库工具。

Hive可以将结构化的数据映射为一张数据库表,提供Hive SQL查询,底层数据存储在HDFS之上。Hive的实质是将SQL语句转换为MR任务运行。
基于HDFS的计算框架,对HDFS上的数据分析和管理。
avatar

1.为什么使用Hive
直接使用MR的问题:

1.学习成本高
2.MR实现复杂查询开发难度大

Hive优点:

1.可扩展:自由宽展几圈规模,一般不需要重启。
2.延展性:Hive支持自定义函数。
3.良好容错性:保证有节点出现问题,SQL语句仍可完成执行。

2.Hive架构

avatar

用户接口:

CLI:shell命令行,最常用。
JDBC/ODBC:开发过程连接 Hive Server。
WEB UI:浏览器访问。

跨语言服务:

Thrift Server,常用hiveserver2,能让不同的编程语言调用Hiver接口。

驱动程序

avatar
(1)解释器解析SQL语句并生成一个抽象语法树(AST),他描述了为生成结果所必须执行的逻辑运算,例如SELECT、JOIN、UNION、分组、投影等。
(2)规划器在Hive Metastore中检索表的元数据,包括HDFS文件的位置、存储格式、行数等。
(3)查询优化器使用AST和表的元数据,生成一个物理运算树,即所谓的执行计划,它描述了为检索数据所必须执行的所有物理运算,例如嵌套循环链接、排序合并连接等。
查询优化器生成的执行计划最终决定了将在Hadoop集群上执行的任务。
(4)元数据
即对数据的描述,表的行,列,属性。
是存储在Mysql或Derby数据库中(RDMS)。

3.Hive和RDMS对比

Hive RDMS
查询语言 SQL RDMS
数据存储 HDFS Raw Device or Local FS
执行器 MapReduce Executor
数据插入 支持批量导入单条导入 支持单条批量导入
数据操作 覆盖追加 行级更新删除
处理数据规模
执行延迟
分区 支持 支持
索引 0.8之后加入简单索引 支持复杂索引
扩展性 高(好) 有限(差)
数据加载模式 读时模式(快) 写时模式(慢)
应用场景 海量数据查询 实时查询