Hive简介

首先,这里说的Hive指的是Hive on Mapreduce。(此外,还有Hive on Spark,区别只是后者把执行计划放到spark集群上运行。)

Hive是一种数据仓库软件,能够协助读写、管理那些存储在分布式存储系统上的大数据集。

Hive架构在Hadoop之上,底层存储在HDFS上,底层计算通过MapReduce。

Hive定义了一种类似SQL的查询语言,被称为HQL。因此,Hive的出现可以让那些精通SQL技能,但是编程能力较弱,以及不擅长Java语言的用户能够在HDFS大规模数据集上很方便地利用类SQL语言查询、汇总、分析数据。

由于Hadoop本身是一个批处理,高延迟的计算框架,Hive使用Hadoop作为执行引擎,自然也就有了批处理,高延迟的特点。此外,Hive对事物的支持不够好,原因是HDFS本身就设计为一次写入,多次读取的分布式存储系统,因此,不能使用Hive来完成诸如DELETE、UPDATE等在线事务处理的需求。因此,Hive适合处理离线的,非实时的大数据。

Hive的一些重要概念:

1,Database:数据库。概念等同于关系型数据库的Schema。在hdfs中表现为${hive.metastore.warehouse.dir}目录下的一个文件夹。

2,Table:内部表。概念等同于关系型数据库的表。数据由hive管理,当使用drop删除表时,会把表的元数据和数据一起删除,数据无法恢复。在hdfs中表现所属db目录下一个文件夹。

3,External Table:外部表。数据不由Hive管理,使用drop命令删除一个表时,只是把表的元数据给删除了,而表的数据不会删除。

4,Partitions:分区。按表定义的分区字段,把具有相同字段值的数据存储到一个目录中。在hdfs中表现为table目录下的子目录。

5,Buckets (or Clusters):分桶。同一个分区内的数据还可以细分,将相同的KEY再划分至一个桶中,有点类似于HASH分区。在hdfs中表现为同一个表目录下根据hash散列之后的多个文件。

原文地址:https://www.cnblogs.com/HuZihu/p/12592696.html