zoukankan      html  css  js  c++  java
  • 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 
      记得要指定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类进行交互访问
  • 相关阅读:
    密码
    日历游戏
    最大公约数
    从map到hash
    9、RabbitMQ-集成Spring
    8、RabbitMQ-消息的确认机制(生产者)
    7、RabbitMQ-主题模式
    6、RabbitMQ-路由模式
    5、RabbitMQ-订阅模式 Publish/Subscribe
    4、RabbitMQ-消息应答与消息持久化
  • 原文地址:https://www.cnblogs.com/lhfcws/p/7761929.html
Copyright © 2011-2022 走看看