什么是Hive?
由FaceBook开源用于解决海量结构化日志的俄数据统计。Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射成一张表,并提供类sql查询功能。
(1)使用HQL作为查询接口。
(2)使用HDFS进行数据存储。
(3)使用MapReduce计算
本质是:将HQL转化成MapR额度测程序。
Hive在Hadoop生态系统中所处的位置:
Hive架构
Client(用户接口)
CLI(hive shell), JDBC/ODBC(java访问hive), WEBUI(浏览器访问hive)
Metastore(元数据)
元数据包括:表名,表所属的数据库(默认是default),表的拥有着,列/分区子段,表的类型(是否是外部表),表的数据所在目录等。
Hadoop
使用HDFS进行存储,使用MapReduce进行计算。
Driver(驱动器)
包含:解析器,编译器,优化器,执行器
解析器:将SQL字符串转换成抽象的语法树AST,这一步一般都是使用第三方工具库完成,如antlr;对AST进行语法分析,比如表是否存在,子段是否存在,SQL语义是否有误。
编译器:将AST编译生成逻辑执行计划。
优化器:对逻辑执行计划进行优化。
执行器:把逻辑执行计划转换成可以运行的物理计划。对于Hive来说,就是MR/TEZ/Spark;
Hive优点与使用场景
优点
(1)操作接口使用SQL语法,提供快速开放能力。
(2)避免写MapReduce,减少开发人员工作成本。
(3)统一的数据管理,可与Impala/spark等共享数据
(4)易扩展(可扩展集群规模),支持自定义函数。
使用场景
(1)数据的离线处理;如,日志分析,海量结构化数据的离线分析。
(2)Hive的执行迟延比较高,因此Hive常用于对时实行要求不高的数据分析场景。
(3)Hive迟延比较高,优势在于处理大数据,对于处理小数据没有优势。