hive三个主要组件
Serialzers/Deserialzers(trunk/serde) 此组件允许用户自己开发自定义序列化、反序列化文件解析器,hive自身也内置了一些序列化解析类。
MetaStore(trunk/metastore) 此组件是hive的元数据服务器,用来存放数据仓库中所有表和分区的信息,hive元数据建表sql、升级sql脚本都存放在此目录下。
Query Processor(trunk/ql) 此组件用于解析sql生成map/reduce作业,并按照先后顺序执行他们(hive核心包,熟读此包,可了解hive执行流程核心)。
其他组件
Command Line Interface(trunk/cli) 此组件用于处理命令行提交作业。
Hive Server(trunk/service) 此组件所有对外api接口的服务端(通过thrift实现),可用于其他客户端与hive交互,比如jdbc。
Common(trunk/common) hive基础代码库,hive各个组件信息的传递也是有此包HiveConf类来管理。
Ant Utilities(trunk/ant) 此组件包含一些ant任务需要的基础代码
Scripts(trunk/bin) 此组件包涵hive里的所有脚本,包括hive CLI的脚本。
hive辅助组件
trunk/conf 此目录包涵hive配置文件hive-default.xml、hive-site.xml
trunk/data hive测试所用数据
trunk/ivy 管理hive跟hadoop各个版本之间的依赖
trunk/lib hive运行期间依赖的jar
trunk/testlibs 用于构建单元测试
Query Processor(hive核心,执行引擎)
Parse and SemanticAnalysis(ql/parse) 此组件主要用于编译sql->Abstract Syntax Trees抽象语法树->QB->Logical Plan->Physical Plan(hive 0.11多表join count(distinct)就在此步骤出错)
Optimizer (ql/optimizer) 基于规则,优化hive作业(not 基于cost),ColumnPruner:列裁剪,Predicate PushDown:谓词下推:将过滤操作推至TableScanOperator之后
Plan Components(ql/plan) 封装内置信息,用于compiler (Parser, SemanticAnalysis and Optimizer) 之间信息传递
MetaData Layer (ql/metadata) 连接hive元数据仓库,获得hive表、分区、列详细信息,用于编译sql语句
Map/Reduce Execution Engine (ql/exec) 执行提交的map/reduce作业
Hadoop Record Readers hive提交hadoop作业时,文件输入输出工具
Hive Function Framework (ql/udf) 看名字就知道,hive内置udf
Compiler流程
hive编译过程执行流程图
- parse,语义分析, 通过antlr解析生成抽象语法树 Driver.compile()
- sa,类型检查与语义分析 SemanticAnalyzer.doPhase1Ctx() 。。。列名是否存在
- lpg,logic plan generator,查询块到逻辑操作数,SemanticAnalyzer.genPlan()。。。什么cube、rollup操作树都在这一步完工
- lpo,logic plan optimizer,逻辑计划优化,SemanticAnalyzer.optimizer()。。。列剪辑、谓语下推、分区剪辑等等
- ppg,physical plan generator,生成物理执行计划,SemanticAnalyzer.genMapRedTasks()
- ppo,physical plan optimizer,物理执行优化,PhysicalOptimizer.optimize()
hive多表join count(distinct)异常,是因为步骤3 lpg生成的逻辑执行计划有bug
附带hive执行流程图
Driver类是hive最重要的类,了解其run、compile、execute方法,就清楚hive的核心。
参考文献
hive源码解析:http://blog.csdn.net/lpxuan151009/article/details/7956518
hive编译解析:http://blog.csdn.net/lalaguozhe/article/details/9339679
hive开发者指南:https://cwiki.apache.org/confluence/display/Hive/DeveloperGuide
hive svn地址:http://svn.apache.org/repos/asf/hive/
相关推荐
电影票房数据分析-hive代码
大规模数据查询Hive及Impala技术原理及架构
kerberos认证hive连接代码,springmvc配置加上java触发认证kerberos认证
深入浅出Hive企业级架构优化、Hive Sql优化、压缩和分布式缓存
官网下载的hive-1.2.2源代码完整版,如果在官网下载速度慢可以拿去用。
大数据处理--Hive技术架构及应用,主要介绍了数据仓库相关知识,对数据仓库与关系数据库进行详细比较。针对数据仓库海量数据的统计分析,而引入Hive,接着分别介绍了Hive架构、工作过程及与关系数据库进行详细比较,...
hive-json-schema最新源代码hive-json-schema最新源代码hive-json-schema最新源代码hive-json-schema最新源代码hive-json-schema最新源代码hive-json-schema最新源代码hive-json-schema最新源代码hive-json-schema...
基于hadoop的Hive数据仓库JavaAPI简单调用的实例,关于Hive的简介在此不赘述。hive提供了三种用户接口:CLI,JDBC/ODBC和 WebUI CLI,即Shell命令行 JDBC/ODBC 是 Hive 的Java,与使用传统数据库JDBC的方式类似 Web...
hive旅游-hive旅游系统-hive旅游系统源码-hive旅游管理系统-hive旅游管理系统java代码-hive旅游系统设计与实现-基于springboot的hive旅游系统-基于Web的hive旅游系统设计与实现-hive旅游网站-hive旅游网站代码-hive...
hive hive 简单用法 希望能帮到需要的人,在学习中相互学习
利用Hive进行复杂用户行为大数据分析及优化案例(全套视频+课件+代码+讲义+工具软件),具体内容包括: 01_自动批量加载数据到hive 02_Hive表批量加载数据的脚本实现(一) 03_Hive表批量加载数据的脚本实现(二) ...
1.通过java查hive hive查询 2.简单查询及jar包
使用javaJDBC连接hive数据,实现简单的操作!
hive hive hive hive hive hive hive hive hive hive hive hive
HIVE安装及详解,及测试,该文档版本是1.2+的。。。。。
Hive1--HIVE架构.pdf 学习资料 复习资料 教学资源
programming_hive-master.zip 经典hive书籍的代码
Hive开发规范及要点,hql 开发基础知识,规范
第1章:Hive基本架构及环境部署 1.MapReduce分析与SQL分析对比 2.Hive的介绍及其发展 3.Hive的安装部署及启动 4.Hive的基本架构讲解 5.安装MySQL作为元数据库存储 6.配置Hive使用MySQL作为元数据库存储 7.Hive中基本...
接着详细介绍了Hive的系统架构,包括基本组成模块、工作原理和几种外部访问方式,描述了Hive的具体应用及Hive HA原理;同时,介绍了新一代开源大数据分析引擎Impala及其与Hive的比较分析;最后,以单词统计为例,...