1、HIVE出现的背景
- MapReduce 开发难度大,学习成本高(wordCount => Hello World)
- Hdfs文件没有字段名、没有数据类型,不方便进行数据的有效管理
- 使用MapReduce框架开发,项目周期长,成本高
2、数仓的出现
a、数据仓库的目的:构建面向分析的、集成的数据集合;为企业提供决策支持;
b、数据仓库本身不产生数据,数据来源与外部;
c、存储了大量数据,对这些数据的分析和处理不可避免的用到HIVE。
3、HIVE和RDBMS(关系型数据)的对比
a、查询语言相似
HQL、SQL相似(语法内容相似,绝大多数是兼容的)
可以使熟悉SQL的程序员能快速的上手HIVE;
b、数据规模
HIVE存储海量数据;
RDBMS只能处理有限的数据集;
c、执行引擎
HIVE的引擎是MR/TEZ/SPARK;
RDBMS使用的是自己的执行引擎;
HIVE中大多数的查询是通过执行MR实现的;
d、数据存储位置
HIVE是存储在HDFS上;
RDBMS是存储在本地文件系统 或者 裸设备。
c、执行速度
HIVE的执行速度在一般的情况下是相对较慢的;
RDBMS是相对较快的。
HIVE慢:
①因为HIVE存储的数据量大,且通常是没有索引的,所以在查询数据的时候需要扫描整个表;
②HIVE使用的查询引擎是MR,也是导致HIVE查询时速度慢的原因之一。
RDBMS快:
RDBMS在查询数据时通常是基于索引的,所以执行延迟较低;
但是,这个快是相对的,当两者都存储相同的较大的数据规模时,那么HIVE的并行计算性能优点就体现出来了。
d、可扩展性
HIVE:
HIVE支持水平扩展;
RDBMS:
RDBMS支持垂直扩展,对水平扩展不友好;
Hive建立在Hadoop之上,其可扩展性与Hadoop的可扩展性是一致的(Hadoop集群
规模可以轻松超过1000个节点)。而RDBMS由于 ACID 语义的严格限制,扩展行非常
有限。目前最先进的并行数据库 Oracle 在理论上的扩展能力也只有100台左右。
e、数据更新
HIVE:
HIVE对数据更新不友好;
RDBMS:
RDBMS支持频繁、快速的数据更新;
因为HIVE是针对数据仓库设计的,而数仓的使用背景是读多写少,所以这是它天生的缺点;
而RDBMS中的数据需要频繁、快速的进行更新。
4、HIVE的优缺点
HIVE的优点:
a、学习成本低;HIVE提供了类似SQL的HQL语言,开发人员能快速上手;
b、处理海量数据;底层执行的是MR任务;
c、系统可以水平扩展;底层是基于HADOOP;
d、功能可以扩展;HIVE允许用户自定义函数(UDF);
e、良好的容错性;当集群中的某个节点发生故障时,执行的任务仍能正常完成;
f、统一管理的元数据;元数据包括:表名、表结构、字段类型;
HIVE的缺点:
a、HQL表达能力有限;如无法表达 迭代计算;
b、执行效率不搞;基于MR的执行引擎;
c、自动生成的MR作业,在某些情况下不够智能;
d、HIVE调优困难;需要学习一些底层原理。