hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转换、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转换成Map reduce任务运行,通过自己的SQL查询分析需要的内容,这套SQL简称Hive SQL。
hive不适合用于联机(online)事务处理,也不提供实时查询功能。它最适合应用在基于大量不可变数据的批处理作业。
hive的特点包括:可伸缩(在Hadoop的集群上动态添加设备)、可扩展、容错、输入格式的松散耦合。
hive 构建在基于静态批处理的Hadoop 之上,Hadoop 通常都有较高的延迟并且在作业提交和调度的时候需要大量的开销。因此,hive 并不能够在大规模数据集上实现低延迟快速的查询,例如,hive 在几百MB 的数据集上执行查询一般有分钟级的时间延迟。
hive是一种底层封装Hadoop的数据仓库处理工具,使用类SQL的hiveQL语言实现查询,所有hive的数据都存储在Hadoop兼容的文件系统中。hive在加载数据过程中不会对数据进行任何的修改,只是将数据移动到HDFS中hive设定的目录下,因此,hive不支持对数据的改写和添加,所有的数据都是在加载的时候确定的。
hive的设计特点如下:
1.支持创建索引,优化数据查询
2.不同的存储类型,例如,出文本文件、Hbase中的文件。
3.将元数据保存在关系型数据库中,大大减少了在查询过程中执行语义检查的时间。
4.可以直接使用存储在Hadoop文件系统中的数据。
5.内置大量用户函数UDF来操作时间、字符和其他的数据挖掘工具,支持用户扩展UDF函数来完成内置函数无法实现的操作。
hive体系架构:
用户接口:
用户接口主要有三个:CLI,Client 和 WUI。其中最常用的是 Cli,Cli 启动的时候,会同时启动一个 hive 副本。
Client 是 hive 的客户端,用户连接至 hive Server。在启动 Client 模式的时候,需要指出 hive Server 所在节点,
并且在该节点启动 hive Server。 WUI 是通过浏览器访问 hive。
元数据存储:
hive将元数据存储在数据库中,如MySQL、debty。hive中的元数据包括表的名字,表的列和分区及其属性,
表的属性(是否为外部表等),表的数据所在目录等。
解释器、编译器、优化器、执行器:
解释器、编译器、优化器完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。
生成的查询计划存储在 HDFS 中,并在随后由 MapReduce 调用执行。
6.类SQL的查询方式,将SQL查询转换为MapReduce的job在Hadoop集群上执行。