文章目录
前言
Hive是基于Hadoop的一个数据仓库工具。它可以将结构哈的数据文件映射为一张数据库表,并提供完整的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运算。将数据存储在HDFS上。
Hive工作原理:
语法分析和词方分析。
使用antlr将SQL语句解析成抽象语法树。
语义分析。
从MetaStore中获取元数据信息,验证SQL语句中的表名、列名、数据类型。
逻辑计划生成。
生成逻辑计划得到算子树。
逻辑计划优化。
对算子树进行优化,包括列剪枝、分区剪枝、谓词下推等。
物理计划生成。
将逻辑计划生成出包含由MapReduce任务组成的DAG的物理计划。
物理计划执行。
将DAG发送到Hadoop集群中进行执行。
将查询结果返回。
架构图如下:
使用的组件
元存储(MetaStore)
该组件存储了Hive中标的描述信息,其中包含表、分区、模型、列即其类型、表数据映射关系等。通常在实际应用中会考虑将MetaStore中的数据存储到RDBMS(关系型数据库),如:MySQL。
驱动(Driver)
控制HiveSQL生命周期的组件,当HiveQL查询提交到Hive时,该驱动管理者会话句柄以及任何会话统计。
查询编译器(Query Compiler)
该组件将HiveSQL编译成有向无环图形式的MapReduce任务。
执行引擎(Execution Engine)
该组件按照依赖顺序执行由编译产生的任务。
Hive服务器(Hive Service)
目前该组件提供了Thrift、JDBC远程语句接口等。