这次主要对hive源码包及hive的两种调试方式做了介绍,这篇结束后,整个源码调试环境的搭建已经完成。
源码包介绍参考官网:
https://cwiki.apache.org/confluence/display/Hive/DeveloperGuide#DeveloperGuide-CodeOrganizationandaBriefArchitecture
1、Hive源码包介绍
serde:这个组件是 hive内置的一些序列化解析类,此组件允许用户自己开发自定义序列化、反序列化文件解析器
MetaStore:hive的元数据服务器,用来存放数据仓库中所有表和分区的信息,hive元数据建表sql、升级sql脚本都存放在此目录下
ql:此组件用于解析sql生成执行计划(hive核心包,熟读此包,可了解hive执行流程核心)
cli:hive命令的入口,用于处理命令行提交作业
service:此组件所有对外api接口的服务端(通过thrift实现),可用于其他客户端与hive交互,比如jdbc。
common:hive基础代码库,hive各个组件信息的传递也是有此包HiveConf类来管理。
ant:此组件包含一些ant任务需要的基础代码
bin:此组件包涵hive里的所有脚本,包括hivecli的脚本
beeline: HiveServer2提供的一个新的命令行工具Beeline
hcatalog: 是apache开源的对于表和底层数据管理统一服务平台,HCatalog底层依赖于Hive Metastore
findbugs:Findbugs是一个在java程序中查找bug的程序,它查找bug模式的实例,也就是可能出错的代码实例,注意Findbugs是检查java字节码,也就是*.class文件。
hwi: hive web页面的接口
shims: shims相关类是用来兼容不同的hadoop和hive版本
llap: 是基于tez的一种近实时查询方案
conf: 此目录包涵hive配置文件hive-default.xml、hive-site.xml
data: hive测试所用数据
lib: hive运行期间依赖的jar
2、调试
使用hive –debug启动hive远程调试模式
可以看到监听端口是8000,处于等待状态
设置eclipse远程调试:
在cliDriver类中打断点,在CliDriver类上右键Debug As->DebugConfigurations
右键Remote Java Application-> New
点Debug,我们看到hive shell会继续执行
输入命令进入调试:
本地调试是通过运行hive-cli项目中的CliDriver类来进行调试:
在cliDriver类中打断点,在CliDriver类上右键Debug As->Java Application
点击yes进入调试界面
在分析hive源码过程中,本地调试用起来更为方便