• 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类进行交互访问
  • 相关阅读:
    1维FDTD仿真
    A Personal Selection of Books on E lectromagnetics and Computational E lectromagnetics---David B. Davidson
    怎么学习计算电磁学【QUORA】
    Legendre polynomials
    获取控件的宽和高
    Fragments (官方文档中文版)
    ViewTreeObserver简介
    第一个Cocos2d-x Lua游戏
    搭建Cocos Code IDE开发环境
    Cocos2d-js中Chipmunk引擎
  • 原文地址:https://www.cnblogs.com/lhfcws/p/7761929.html
Copyright © 2020-2023  润新知