Hive的架构和工作流程
架构
1.hive是数据仓库,在hadoop基础上处理结构化数据;它驻留在hadoop之上,用户对数据的统计,查询和简单的分析操作。
2.hive不是
a.关系型数据库
b.OLTP
c.实时查询和行级更新操作
3.hive特点
a.表模型存储在database(关系型)中,处理的数据存储在HDFS上;
b.设计模式遵循OLAP
c.它提供了一套类SQL的语言(HiveQL or HQL),用于执行查询
d.它是简单的,快速的,可扩展的和易伸缩的
4.hive架构
a.(用户接口)User Interface:hive提供Web UI 、command line和HD Insight;
b.(元数据):hive选择独立的的数据库(MySQL)用于存储metadata,元数据包含:表的信息、databases信息、表的列信息、字段类型信息和HDFS mapping(映射);
c.(HQL处理引擎)HiveQL Process Engine:HiveQL类似于SQL,用于查询转移的模式信息。它是对MapReduce程序的传统方法的替换之一
d.(执行引擎)Execution Engine:HiveQL流程引擎和MapReduce的连接部分是Hive执行引擎。执行引擎处理查询并生成与MapReduce结果相同的结果
e.(HDFS or HBASE):Hadoop分布式文件系统或HBASE是将数据存储到文件系统中的数据存储技术。
工作流程
1.(执行查询操作)Execute Query
命令行或Web UI之类的Hive接口将查询发送给Driver(任何数据库驱动程序,如JDBC,ODBC等)以执行。
2.(获取计划任务)Get plan
Driver借助查询编译器解析查询,检查语法和查询计划或查询需求。
3.(获取元数据信息)Get Metadata
编译器将元数据请求发送到Metastore(任何数据库)。
4.(发送元数据)
MetaStore将元数据作为对编译器的响应发送出去。
5.(发送计划任务)Send Plan
编译器检查需求并将计划重新发送给Driver。到目前为止,查询的解析和编译已经完成。
6.(执行计划任务)Execute Plan
Driver将执行计划发送到执行引擎。
7.(执行Job任务)Execute Job
在内部,执行任务的过程是MapReduce Job。执行引擎将Job发送到ResourceManager,
ResourceManager位于Name节点中,并将job分配给datanode中的NodeManager。在这里,查询执行MapReduce任务.
7.1.(元数据操作)Metadata Ops 在执行的同时,执行引擎可以使用Metastore执行元数据操作。
8.(拉取结果集)Fetch Result 执行引擎将从datanode上获取结果集;
9.(发送结果集至driver)Send Results 执行引擎将这些结果值发送给Driver。
10.(driver将result发送至interface)Send Results Driver将结果发送到Hive接口