Hive 本地调试方法
Posted Lhfcws
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hive 本地调试方法相关的知识,希望对你有一定的参考价值。
关键词:hive, debug
本地调试(local debug)
Hive 可分为 exec (hive-exec,主要对应源码里的ql目录) 和 metastore 两部分,其中exec对外有两种接口方式 CLIDriver 和 HiveServer2的ThriftCLIService。前者对应的就是直接执行hive命令的command line,后者对应就是thrift直连或jdbc的连接方式,因此这里其实有个知识点:hive命令的执行是不经过hiveserver2的服务的,虽然底层代码是共用的。而metastore对外主要是以Thrift方式为主,并实现了一个客户端 HiveMetaStoreClient。
环境准备
- 首先,需要在本地部署好Hadoop+HDFS并启动HDFS服务,并且HDFS的目录/tmp 和 /user/hive 目录确保 hive用户有可写权限(如果hive的doAs配置关了,想调试storageBased权限的自己额外去注意HDFS权限的配置即可)。
- mysql并不是必须的,如果你不关注metastore的存储,则无需指定相关的metastore配置,Hive会自动选择和初始化嵌入式数据库derby作为metastore的存储。
- 一个好的IDE,Idea或Eclipse,本文用的是Idea。
- maven3,JDK1.7+
代码准备
- 去Hive官网或对应发行版的官网(HDP、CDH)等去找到官方提供的对应版本的Hive源码下载
- 去Hive官网或对应发行版的官网(HDP、CDH)等去找到官方提供的对应版本的Hive 运行版下载 。需要运行版的原因是用hive传统方式启动需要hive/lib/下的依赖jar。
- 先对源码打包一次,防止导入IDE时太慢。命令如下:
mvn clean package -P hadoop-2 -DskipTests -Dmaven.test.skip=true 。
记得要指定hadoop版本的profile,初次打包没什么问题可以跳过测试,不然要挺久的。然后大陆连apache central repo有时可能会超时,超时请在不同时间段多试几次或使用梯子。 - 源码maven项目导入IDE
调试exec
- 在Hive运行版目录下执行 hive --service metastore 启动 metastore
- 将本地Hadoop的core-site.xml放到 hive 源码目录的 src/main/resources 下,重新打包(如有必要)
- debug模式运行hive-cli中的CLIDriver类,此时控制台可见hive command line,可以输入命令然后再ql的相应代码中打断点进行单步或拦截。
调试metastore
- 以debug模式启动HiveMetastore
- 另外写testcase使用HiveMetastoreClient类进行交互访问
以上是关于Hive 本地调试方法的主要内容,如果未能解决你的问题,请参考以下文章
Spark 本地连接远程服务器上带有kerberos认证的Hive
谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js
Python 自动化 - 浏览器chrome打开F12开发者工具自动Paused in debugger调试导致无法查看网站资源问题原因及解决方法,javascript反调试问题处理实例演示(代码片段