一,概述
1,hive是基于Hadoop的一个数据仓库工具。可以将结构化的数据文件(hdfs)映射为数据库表,并提供类sql查询功能。说白了,hive就是MapReduce客户端,对MapReduce的一个封装,将用户编写的HQL语法转换成MR程序进行执行。
2,hive特点:
a)可扩展性:Hive可以自由扩展集群的规模。
b)延展性:Hive支持用户的自定义函数,用户可以根据自己的需求来实现自己的函数,UDF
c)容错性:良好的容错性,节点出现问题sql仍可完成执行。
二,hive架构和基本组成
1,架构
2,基本组成
a)用户接口:包括 CLI、JDBC/ODBC、WebGUI。其中,CLI为shell命令行;JDBC/ODBC是Hive的JAVA实现,与传统数据库JDBC类似;WebGUI是通过浏览器访问Hive。
b)CLI:client,客户端,命令行,直接运用shell脚本编程。
c)元数据存储:通常是存储在关系数据库如 mysql , derby中。Hive 将元数据存储在数据库中。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。
d)解释器、编译器、优化器、执行器。 完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在 HDFS 中,并在随后有 MapReduce 调用执行。