最具影响力的数字化技术在线社区

168大数据

 找回密码
 立即注册

QQ登录

只需一步,快速开始

1 2 3 4 5
打印 上一主题 下一主题
开启左侧

[Hive] Hive代码组织及架构简单介绍

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-17 20:31:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
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流程
  • 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的核心。
参考文献

楼主热帖
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 赞 踩

168大数据 - 论坛版权1.本主题所有言论和图片纯属网友个人见解,与本站立场无关
2.本站所有主题由网友自行投稿发布。若为首发或独家,该帖子作者与168大数据享有帖子相关版权。
3.其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和168大数据的同意,并添加本文出处。
4.本站所收集的部分公开资料来源于网络,转载目的在于传递价值及用于交流学习,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
5.任何通过此网页连接而得到的资讯、产品及服务,本站概不负责,亦不负任何法律责任。
6.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源,若标注有误或遗漏而侵犯到任何版权问题,请尽快告知,本站将及时删除。
7.168大数据管理员和版主有权不事先通知发贴者而删除本文。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

关于我们|小黑屋|Archiver|168大数据 ( 京ICP备14035423号|申请友情链接

GMT+8, 2024-4-25 15:35

Powered by BI168大数据社区

© 2012-2014 168大数据

快速回复 返回顶部 返回列表