Hive源码环境搭建(二)——配置与Debug

Hive源码环境搭建(二)——配置与Debug

北京时间:2020年04月27日22:30

接着上次写Hive源码环境搭建(一)源码编译,下面接着做Hive的环境配置,以及对Hive进行Debug

本人环境:

系统:macOS 10.14.6、Maven版本:3.5.4、JDK版本:1.8.0_201

IDE版本:IntelliJ IDEA 2020.1

Hive版本:3.1.1(当前最新的HIve分支4.0我也编译了)

Hadoop版本:hadoop-3.1.3(没有Hadoop的同学需要在本地搭建伪分布式环境)

1、Hive配置

  1. 配置Hadoop位置

    1. 进入hive-rel-release-3.1.1/packaging/target/apache-hive-3.1.1-bin/apache-hive-3.1.1-bin/conf
    2. 目录复制目录下的hive-env.sh.templatehive-env.sh(操作时发现target被加锁了,修改一下文件的权限就行)
    3. 添加Hadoop所在目录:HADOOP_HOME=/code/bigdata/hadoop-3.1.3
  2. 初始化Hive元数据信息

    1. 进入hive-rel-release-3.1.1/packaging/target/apache-hive-3.1.1-bin/apache-hive-3.1.1-bin/

    2. 运行命令bin/schematool -dbType derby -initSchema(这里为了方便使用的是derby,也可设置为MySQL)

    3. 看到结果,说明成功:

      Metastore connection URL:        jdbc:derby:;databaseName=metastore_db;create=true
      Metastore Connection Driver :    org.apache.derby.jdbc.EmbeddedDriver
      Metastore connection User:       APP
      Starting metastore schema initialization to 3.1.0
      Initialization script hive-schema-3.1.0.derby.sql
      
      Initialization script completed
      schemaTool completed
      

    注意:

    在初始化derby时报错:

    Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)
            at org.apache.hadoop.conf.Configuration.set(Configuration.java:1357)
            at org.apache.hadoop.conf.Configuration.set(Configuration.java:1338)
            at org.apache.hadoop.mapred.JobConf.setJar(JobConf.java:518)
            at org.apache.hadoop.mapred.JobConf.setJarByClass(JobConf.java:536)
            at org.apache.hadoop.mapred.JobConf.<init>(JobConf.java:430)
            at org.apache.hadoop.hive.conf.HiveConf.initialize(HiveConf.java:5135)
            at org.apache.hadoop.hive.conf.HiveConf.<init>(HiveConf.java:5098)
            at org.apache.hive.beeline.HiveSchemaTool.<init>(HiveSchemaTool.java:96)
            at org.apache.hive.beeline.HiveSchemaTool.main(HiveSchemaTool.java:1473)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    

    造成错误的原因是:com.google.common.base.Preconditions.checkArgument 这是因为hive内依赖的guava.jar和hadoop内的版本不一致造成的。

    解决方法:

    查看Hadoop和Hive依赖库中guava.jar的版本,如果两者不一致,删除版本低的,并拷贝高版本。

    例如我这里是:

    • Hadoop的guava.jarhadoop-3.1.3/share/hadoop/common/lib/guava-27.0-jre.jar

    • Hive的guava.jarhive-rel-release-3.1.1/packaging/target/apache-hive-3.1.1-bin/apache-hive-3.1.1-bin/lib/guava-19.0.jar

    很明显Hadoop的guava.jar更高,我将Hive中的guava.jar,替换为Hadoop的guava.jar

2、项目启动

  1. 启动Hadoop(需要提前配置好Hadoop环境)

    执行hadoop-3.1.3/sbin下的./start-all.sh

    输出结果:

    Starting namenodes on [0.0.0.0]
    Starting datanodes
    Starting secondary namenodes [localhost]
    Starting resourcemanager
    Starting nodemanagers
    
  2. 启动Hive

    进入hive-rel-release-3.1.1/packaging/target/apache-hive-3.1.1-bin/apache-hive-3.1.1-bin/目录执行命令bin/hive --debug -hiveconf hive.root.logger=WARN,console,启动Debug模式。

    输出结果:

    Listening for transport dt_socket at address: 8000
    

3、IDEA配置

  1. 配置IDEA的Debug项

    依次点击”Run”->”Debug…”->”Edit Configurations…“,然后点击左上角的”+”,选择”Remote”,如下图:

    在这里插入图片描述

    主要修改Host和Port

  2. 执行Debug

    1. 执行Debug

    2. 在IDEA上打断点就行了,程序的入口是/hive-rel-release-3.1.1/cli/src/java/org/apache/hadoop/hive/cli/CliDriver中的main方法。

    3. 在命令行执行SQL,例如:show databases;

    4. 执行结果:
      在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值