首先介绍下hive的概念
hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
hive的适用场景
hive是构建在基于静态批处理的hadoop之上的,通常有较高的延迟,就比如说如果对几百MB的数据查询,可能查询时间是以分钟为单位的,所以hive并不适合低延迟的应用,最佳的使用场合是大数据集的批处理作业,例如,网络日志分析。
特征:
1、支持创建索引,优化数据查询,
2、不同的存储类型, 例如纯文本文件,HBase中的文件
3、将元数据保存在关系型数据库中, 大大减少了在查询过程中执行语义检查的时间,
4、可以直接使用存储在Hadoop文件系统中的数据
5、内置大量的用户函数UDF来操作时间,字符串和其他的数据挖掘工具,支持用户扩展UDF函数来完成内置函数无法实现的操作
6、类SQL的查询方式,将SQL查询转换为MapReduce的job在Hadoop集群上执行。
结构:
1、用户接口:CLI,Client,WUI。最常用的是CLI
2、元数据存储:Hive将元数据存储在数据库中。如mysql
3、解释器、编译器、优化器、执行器:sql语句传入,解析器解析出语句中的关键字,优化器将select进行优化,形成树,编译器对select重新编译,形成相应的逻辑计划,执行器将逻辑计划实现,转变成物理计划(mr)
4、Hadoop:Hive的数据存储在HDFS中,大部分查询由MR完成