搜索
搜 索
本版
文章
帖子
用户
图文精华
hadoop-2.6.0+zookeeper-3.4.6+hbase-1.0.0+hive-1.1.0完全分布 ...
首页
Portal
专题
BBS
面试
更多
登录
注册
用户组:游客
主题
帖子
云币
我的帖子
我的收藏
我的好友
我的勋章
设置
退出
导读
博客
群组
今日排行
本周排行
本周热帖
本月排行
本月热帖
会员排行
About云
»
专题
›
技术学习(版主发帖区)
›
大数据学习
›
Hive|数据仓库
›
介绍解说
›
Hive代码组织及架构简单介绍
0
2
0
分享
Hive代码组织及架构简单介绍
hiqj
2014-12-26 23:01:12
发表于
介绍解说
[显示全部楼层]
只看大图
阅读模式
关闭右栏
2
23247
本帖最后由 pig2 于 2014-12-27 02:04 编辑
问题导读:
1、hive三个主要组件分别是什么?
1、hive三个主要组件
Serialzers/Deserialzers(trunk/serde) 此组件允许用户自己开发自定义序列化、反序列化文件解析器,hive自身也内置了一些序列化解析类。
MetaStore(trunk/metastore) 此组件是hive的元数据服务器,用来存放数据仓库中所有表和分区的信息,hive元数据建表sql、升级sql脚本都存放在此目录下。
Query Processor(trunk/ql) 此组件用于解析sql生成map/reduce作业,并按照先后顺序执行他们(hive核心包,熟读此包,可了解hive执行流程核心)。
2、其他组件
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的脚本。
3、hive辅助组件
trunk/conf 此目录包涵hive配置文件hive-default.xml、hive-site.xml
trunk/data hive测试所用数据
trunk/ivy 管理hive跟hadoop各个版本之间的依赖
trunk/lib hive运行期间依赖的jar
trunk/testlibs 用于构建单元测试
4、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
5、Compiler流程
1)、parse,语义分析, 通过antlr解析生成抽象语法树 Driver.compile()
2)、sa,类型检查与语义分析 SemanticAnalyzer.doPhase1Ctx() 。。。列名是否存在
3)、lpg,logic plan generator,查询块到逻辑操作数,SemanticAnalyzer.genPlan()。。。什么cube、rollup操作树都在这一步完工
4)、lpo,logic plan optimizer,逻辑计划优化,SemanticAnalyzer.optimizer()。。。列剪辑、谓语下推、分区剪辑等等
5)、ppg,physical plan generator,生成物理执行计划,SemanticAnalyzer.genMapRedTasks()
6)、ppo,physical plan optimizer,物理执行优化,PhysicalOptimizer.optimize()
hive多表join count(distinct)异常,是因为步骤3 lpg生成的逻辑执行计划有bug
6、附带hive执行流程图
Driver类是hive最重要的类,了解其run、compile、execute方法,就清楚hive的核心。
7、参考文献
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/
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
显身卡
已有(2)人评论
电梯直达
正序浏览
355815741
发表于 2014-12-27 09:03:59
学习了,谢谢分享~
回复
使用道具
举报
显身卡
sun128837
发表于 2015-6-4 11:46:07
谢谢分享,我刚接触两天,貌似辅助工具应该提下hwi吧
回复
使用道具
举报
显身卡
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
灌水之王
经常在论坛发帖,且发帖量较大
发表新帖
hiqj
实习版主
关注
22
主题
44
帖子
10
粉丝
TA的主题
通过身边小事解释机器学习是什么?
2015-6-13
一个技术人的知识管理方法论
2015-6-13
这就是搜索引擎--读书笔记七--倒排列表压缩算法
2015-6-13
Hadoop生态系统学习路线
2015-5-14
如何在openstack中创建镜像 for Juno
2015-4-11
24小时热文
哈佛通识教育红皮书 (北大高等教育文库·大
代码精进之路:从码农到工匠
为什么面试难!一文帮我们看透本质,拿捏of
程序员薪资排名,AI位居榜首,平均年薪277
Django实战:Python Web典型模块与项目开发
关闭
推荐
/2
中文版ChatGPT
1.无需魔法 2.提高编程效率 3.提高文档能力
查看 »
新手帮助
新手帮助:注册遇到问题,领取资源,加入铁粉群,不会使用搜索,如何获取积分等
查看 »
意见
反馈