Hive产生背景
- MapReduce编程的不便性
- 传统RDBMS人员的需要
HDFS上的文件并没有Schema的概念
Hive是什么
由FaceBook开源,用于解决海量结构化日志的数据统计问题。
构建在Hadoop之上的数据仓库。
Hive提供的SQL查询语言:HQL
底层支持多种不同的执行引擎:MR/Tez/Spark
为什么要使用Hive
容易、简单上手
为超大数据集设计的计算/扩展能力
统一的元数据管理:Hive数据存放在HDFS中,元数据是记录数据的数据。
Hive架构
- Client提交SQL到hive中,表信息(元数据)存放在hive中自带引擎(Derby)。通常情况下我们存放在Mysql中。Derby只能进行但客户端操作,就是所谓的单session,即使在测试环境中,也不推荐使用Derby。我们往往使用Mysql存放元数据信息。而mysql一旦挂掉之后,丢掉元数据信息,虽然数据在HDFS中,但是没有schema信息,数据就无法使用了,因此需要做主备。
- Hive翻译SQL成MapReduce提交到集群中运行,也就是提交到RM中
- 在Hadoop集群中,有很多节点,但是Hive是一个客户端而已,并不涉及到集群的概念,也就是不需要Hive集群就可以。
Hive与RDBMS的区别
虽然HiveSQL 与SQL非常类似,但是他们有本质区别的。虽然他们长得非常相似,但是他们之间没有任何关系