目录
hive概述
Hive
Hive是基于Hadoop的一个数据仓库工具,由Facebook开源用于解决海量结构化日志,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。
(1)hive的本质是将HQL转化成为MapReduce
(2)hive分析数据底层的实现是MapReduce;
(3)hive处理的数据存储在HDFS上;
(4)执行程序运行在yarn上;
hive优点
(1)hive支持用户自定义函数,可以根据需求实现用户的自定义函数;
(2) 避免写MapReduce,减少了开发人员的学习成本;
(3)采用类SQL语法,简单、容易上手,实现快速开发;
(4)执行延迟高,常用于数据分析、对实时性要求不高的地方;
(5)处理大数据有优势,因为hive延迟高;处理一个数据会生成一个MapReduce,处理大数据比处理小数据减少生成MapReduce。
hive缺点
(1)效率比较低
hive自动生成MapReduce,不够智能化;
hive粒度比较粗,调优比较困难;
(2)HQL表达有限
不能表达迭代式算法;
不擅长数据挖掘;
因为MapReduce的关系不能实现效率高的算法。
hive构架原理
(1)Metastore:元数据
元数据包括:列/分区字段、表名、表所属的数据库、表的拥有者、表的类型(内外部表)、表数据所在的目录。
(2)client:用户接口
CLI(command-line-interface)、JDBC/ODBC(访问hive)、WEBUI(浏览器访问hive)。
(3)driver:驱动器
1)解析器(SQL parser):将SQL字符串转换成抽象语法树AST;
2)编译器(physical plan): 将AST编译生成逻辑执行计划;
3)优化器(query optimizer):对逻辑执行计划进行优化;
4)执行器(execution):将逻辑执行计划转化成为可运行的物理计划(MR/spark);
Hive提供一系列交互接口,接收到用户指令(SQL),结合元数据(MetaStore),使用自己的Driver,将这些指令翻译成MapReduce提交到Hadoop中执行,将返回的结果输出到用户交互接口。
(4)Hadoop
使用HDFS进行存储,使用MapReduce进行计算。
hive与数据库比较
数据库可以用在Online的应用中,Hive是为数据仓库而设计的,Hive和数据库除了拥有类似的查询语言其他再无类似之处。
(1)数据更新
Hive是针对数据仓库应用设计的,数据仓库是读多写少,不建议对数据进行改写,所有的数据都是在加载的时候确定好的;数据库中的数据通常需要进行修改。
(2)查询语言
SQL被广泛应用在数据仓库中,为此专门针对Hive的特性设计了类SQL的查询语言HQL。
(3)执行延迟
Hive在查询数据时没有索引需要扫描整个表,并且MapReduce本身具有较高的延迟,因此延迟较高;数据规模较小时数据库的执行延迟较低;当数据规模大到超过数据库的处理能力的时Hive的并行计算能体现出优势。
(4)数据规模
Hive建立在集群上并且可以利用MapReduce进行并行计算,因此可以支持大规模数据;数据库可以支持的数据规模较小。
本文为学习笔记!!!!!