Hive的产生背景

1.MapReduce编程不方便:开发、测试、需求变更。传统关系型数据库人员的需要。Hive文件存放在HDFS之上的,那么如果你想使用SQL去处理它,需要一个前提:结构化、文件映射成表格 => Schema 元数据信息(metastore)。Hive是:data warehouse software (数据仓库软件)hive就是使用SQL对分布式文件系统上的存储的大的数据集进行读写管理的数据仓库。Hive定义了SQL语言:HQL (HiveQL) (类SQL)。通常用于离线处理:
SQL ————Hive————MapReduce/Spark/Tez————>YARN(最开始时是hive把SQL语言翻译成MapReduce,然后再到yarn上面执行)注:MapReduce执行效率低的原因maptask和reducetask全部是以进程执行的,即使它能够开启JVM,但是它用的时候需要开启进程,不用的时候又需要关闭进程,耗费成本

Hive的发展历程

08月/07年 始于Facebook
           05月/13年 0.11 版本 Stinger Phase 1 ORC HiveServer2
           10/13 0.12  Stinger Phase 2 ORC improvement
           04/14 0.13  Stinger Phase 3 Tez and Vectorized query engine (向量化的查询引擎)
           11/14 0.14  Stinger.next Phase 1: Cost-based optimizer

使用Hive的原因

1.简单容易上手,方便写SQL
2.基于hadoop的,所以可以操作大规模的数据集,对于hadoop来说存不下的可以加机器,所以其扩展性可以
3.从metastore的角度,底层共享meta。可以实现hive与Pig/Impala/Presto/SparkSQL共享元数据信息,就是说在hive中创建一个表,在其他几个组件里都可以用)
部署架构: Hadoop分布式 集群
Hive 只是一个客户端,没有集群的概念
Hive与RDBMS的关系 (面试):

  1. SQL:(都是面向SQL,) HiveQL和SQL的关系 (它们俩只是类似的关系,语法有点像而已)
  2. 实时性: hive比RDBMS实时性差
  3. 事务 :(RDBMS有事务,就是要么同时成功要么同时失败。hive也是有事务,但是大数据中没必要用,尤其离线的情况)
  4. 分布式 :MYsql支持分布式,它也有集群的概念,就是规模小。hive也支持分布式
  5. 数据量 :hive处理的数据量大