Hive是什么?
由facebook开源的用于解决海量结构化日志的数据统计,后称Apache Hive 的开源项目。
Hive是基于Hadoop文件系统上的数据仓库架构。存储用HDFS,计算用MR。它为数据仓库管理提供大量功能,如数据ETL(详细看前文)工具,数据存储管理与大型数据查询和分析能力。
同时Hive还定义了类SQL语言--Hive QL,允许用户进行和SQL相似的操作。他可以将结构化数据的数据文件转化为一张数据表,并提供简单的查询功
能。可以将SQL转化为MapReduce语句。
Hive可以理解成为一个工具,不存在主从结构,不用安装到每台机器上,只需要安装几台就行了。
默认数据库:derby,后期转换成关系型数据库mysql。
看看下图hive在Hadoop生态系统中的位置。
接着看下Hive体系结构。
Meta store引进元数据。
HDFS和MapReduce。最原始的数据其实还是在HDFS上,并且在跑一些SQL语句的时候,内部实际上是跑MapReduce。
Client客户端。可通过JDBC或者CLI提交任务到Driver上面运行,SQL Parser将数据变化成抽象语法树,然后解析成Physical Plan放到Execution上执行(其实也是在MR中执行)。
这边注意,meta store并不是数据库,而是数据!存放元数据的具体信息。
下面就是对Driver的详细拆解。
这里可以结合上面的图进行理解。
下面的话是整体流程。
这里再客户端提交了任务,先读取meta data找到元数据信息,包括存放位置,大小等,然后再放到Driver进行解析,然后放到map reduce上跑。