centos环境下安装hive踩的一些坑

1、首先Hadoop与hive的版本一定要配合好,之前使用的是Hadoop3.x的版本配上Hive2.x一直会报错,就算配置都正确,因为版本问题也一直会报错,主要报错为com.google......,主要原因还是jar包冲突;

2、hive报错:java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)

  从报错信息来看:

  一,java.lang.NoSuchMethodError

    原因:
    1.系统找不到相关jar包

    2.同一类型的 jar 包有不同版本存在,系统无法决定使用哪一个

  二,com.google.common.base.Preconditions.checkArgument

    根据百度可知,该类来自于guava.jar

  三,查看该jar包在hadoop和hive中的版本信息

    hadoop-3.2.1(路径:hadoop\share\hadoop\common\lib)中该jar包为  guava-27.0-jre.jar

      hive-2.3.6(路径:hive/lib)中该jar包为guava-14.0.1.jar

  四,解决方案===!!!!!!!!!!!!!!!!!!!!!!!!
    删除hive中低版本的guava-14.0.1.jar包,
    将hadoop中的guava-27.0-jre.jar复制到hive的lib目录下即可。
  五,成功运行hive

3、一定要记得加入 MySQL 驱动包(mysql-connector-java-5.1.40-bin.jar)该 jar 包放置在 hive 的根路径下的 lib 目录

4、注意:当使用的 hive 是 2.x 之前的版本,不做初始化也是 OK 的,当 hive 第一次启动的 时候会自动进行初始化,只不过会不会生成足够多的元数据库中的表。在使用过程中会 慢慢生成。但最后进行初始化。如果使用的 2.x 版本的 Hive,那么就必须手动初始化元 数据库。使用命令:

  schematool -dbType mysql -initSchema

5、之前安装hive的版本太低,删除了低版本的hive,后来重新下载了3.x版本的hive,发现schematool -dbType mysql -initSchema初始化报错:

Error: Table 'CTLGS' already exists (state=42S01,code=1050)
org.apache.hadoop.hive.metastore.HiveMetaException: Schema initialization FAILED! Metastore state would be inconsistent !!
Underlying cause: java.io.IOException : Schema script failed, errorcode 2

原因:其实之前你已经初始化过了,后来你更改了hive或者MySQL的配置文件后,导致他们之间无法通信。再进行初始化时就会发生这样的错误。

解决办法:

mysql dump -uUSER -pPASSWORD DBNAME > /tmp/my_backup.sql 
drop database DBNAME;
create database DBNAME; 
mysql -uUSER -pPASSWORD DBNAME < /tmp/my_backup.sql
##第一句中,user,password DBNAMe都换成你自己的。后面的路径是相对路径,你可以更换路径,这一步只不过是把你之前的数据库先备份一下。
##接下来删掉数据库,再重新创建数据库,然后再啊数据库拷回来就好了

这种错误的情况,一般就是换用户,换数据库,就解决了。

 

 

最后关于Hive的安装配置,可以参照:

https://dblab.xmu.edu.cn/blog/1080-2/ (推荐,比较全面)

https://www.cnblogs.com/qingyunzong/p/8708057.html

 

posted @ 2020-06-20 02:18  ZERSOG  阅读(1046)  评论(0编辑  收藏  举报