Hive代码分析.pdf

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Hive代码分析

HIVE 代码分析 梁堃 2011-12-02 目录 背景2 整体架构2 主要流程4 顶级流程4 Session 管理4 命令处理器5 Driver6 编译流程6 执行流程8 编译器10 前 10 ParseDriver10 辅助类10 分析流程11 中后 11 语义分析框架12 BaseSemanticAnalyzer12 SemanticAnalyzer12 Optimizer13 遍历框架14 运行时16 Task16 Operator17 ExprNodeEvaluator19 对象模型20 总结22 背景 本文主要用于分析Hive (Data Warehouse Infrastructure from Facebook )的实现。所 有的分析基于版本0.7.1。 整体架构 Hive 的整体架构如下图所示。 如上图所示,Hive 主要分为三个层次: 1. Interfaces :这是Hive 对外提供的使用接口 主要包括命令行接口、web 接口、基于thrift 协议的服务接口、基于JDBC/ODBC 协议的数据 库接口。 2. Query Engine :这是Hive 的核心,也就是所说的查询引擎 这里,RDBMS 其实并不包含在Hive 之中,它可以是任何一个满足要求的关系数据库。它是 metastore 实际的载体。 3. Hadoop :这一部分其实并不包含在Hive 之中,它是HIVE 存储/计算的实际的载体 上图中,这三个层次之间的主要交互是:Interfaces 将字符串形式的HQL 语句传递给 QueryEngine 中的编译器;编译器将plan.xml 传递给运行时;运行时反序列化plan.xml ,执行其中 指定的任务,并将Job 提交给Hadoop。当然,除了MapReduce 任务之外,任务也可能是本地任务、 元数据任务、hdfs 任务。 Hive 的核心部分是Query Engine (在Hive 的原始Paper 中被称为Driver )。从逻辑上讲, QeuryEngine 又可以分为三个大部分: 1. Compiler :编译器 这部分包括HQL 的Parser、SemanticAnanlyzer、Optimizer ,Task/Plan Generator 等部分。 2. Runtime :运行时 这部分包括执行QueryPlan 所需要的驱动、算子等。 3. 其它辅助工具 这里面包括各种层次的驱动/框架代码、日志、会话管理、配置管理等。 Hive-Src 的目录结构大致如下: • cli :命令行接口的实现; • hwi :web 接口的实现; • service :thrift 服务接口的实现; • odbc/jdbc :ODBC/JDBC 接口的实现; • serde :序列化/反序列化以及Hive 数据类型的实现; • ql :编译器/运行时的实现; • metastore :Metastore Layer 的实现; • common :仅包含HiveConf 的实现; • contrib :提供了除内置以外的更多的serde、udf ; 主要流程 顶级流程 本部分介绍Hive Interfaces 部分使用Hive Query Engine 的主要流程。这里的流程是顶级 的主控流程,并不涉及执行细节。这里的流程主要来自于hive.cli。 1. 命令行参数处理:事实上,命令行参数是分两步处理的,这里处理的命令行参数是-hiveconf x=y 类型的,对于这种参数,会设置在System.Properties 中,以便

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档