hive1.0.0-1.2.1版本升级及升级中遇到bug

来源:互联网 发布:看漫画用什么软件 知乎 编辑:程序博客网 时间:2024/06/05 21:08


1,现版本:hive1.0.0

2,目标升级版本:hive1.2.1

3,下载hive1.2.1版本( apache-hive-1.2.1-bin.tar.gz)

http://apache.fayea.com/hive/hive-1.2.1/


升级步骤:

1.关闭当前打开的连接.

2.备份mysql中的hive库(如若升级失败,便于恢复)

   mysqldump -uhive -phive hive > schem_hive-1.0.0.sql

3.解压新版本hive

4.修改环境变量

    指定HIVE_HOME到新版本hive目录

5.配置新版本hive

   cd ${HIVE_HOME}/scripts/metastore/upgrade/mysql/  目录下

    找到很多如下sql脚本文件:

    .......

    -rw-r--r--. 1 hadoop hadoop   141 Apr 29 10:26 upgrade-0.10.0-to-0.11.0.mysql.sql
    -rw-r--r--. 1 hadoop hadoop   311 Apr 29 10:26 upgrade-0.11.0-to-0.12.0.mysql.sql
    -rw-r--r--. 1 hadoop hadoop   386 Apr 29 10:26 upgrade-0.12.0-to-0.13.0.mysql.sql
    -rw-r--r--. 1 hadoop hadoop   282 Apr 29 10:26 upgrade-0.13.0-to-0.14.0.mysql.sql
    -rw-r--r--. 1 hadoop hadoop   278 Apr 29 10:26 upgrade-0.14.0-to-1.1.0.mysql.sql
    -rw-r--r--. 1 hadoop hadoop   271 Apr 29 10:26 upgrade-0.5.0-to-0.6.0.mysql.sql
    -rw-r--r--. 1 hadoop hadoop   230 Apr 29 10:26 upgrade-0.6.0-to-0.7.0.mysql.sql
    -rw-r--r--. 1 hadoop hadoop   201 Apr 29 10:26 upgrade-0.7.0-to-0.8.0.mysql.sql
    -rw-r--r--. 1 hadoop hadoop   137 Apr 29 10:26 upgrade-0.8.0-to-0.9.0.mysql.sql
    -rw-r--r--. 1 hadoop hadoop   235 Apr 29 10:26 upgrade-0.9.0-to-0.10.0.mysql.sql
    -rw-r--r--. 1 hadoop hadoop   243 May  7 16:55 upgrade-1.1.0-to-1.2.0.mysql.sql

     查找发现没有找到对应版本的升级脚本;进入mysql的hive库中查找SCHEMA_VERSION如下:

    mysql> use hive
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A

   Database changed
   mysql> select * from VERSION;
   +--------+----------------+--------------------------------------------------+
   | VER_ID | SCHEMA_VERSION | VERSION_COMMENT   |
   +--------+----------------+--------------------------------------------------+
   |      1    | 0.14.0          | Hive release version0.14.0             |
   +--------+----------------+-------------------------------------------------+
   1 row in set (0.00 sec)

    因为1.0.0是0.14.0之后的大版本,所以1.0.0升级使用的SCHEMA_VERSION还是0.14.0;

      找到从1.0.0升级到1.2.1需要的如下脚本:

    -rw-r--r--. 1 hadoop hadoop   278 Apr 29 10:26 upgrade-0.14.0-to-1.1.0.mysql.sql

    -rw-r--r--. 1 hadoop hadoop   243 May  7 16:55 upgrade-1.1.0-to-1.2.0.mysql.sql

     执行如下脚本:

    mysql -uhive -phive hive <upgrade-0.14.0-to-1.1.0.mysql.sql

    mysqldump -uhive -phive hive > schem_hive-1.1.0.sql

    mysql -uhive -phive hive <upgrade-1.1.0-to-1.2.0.mysql.sql

     然后将mysql的驱动拷贝到现在版本的lib下;

     将之前旧版本配置好的hive-site.xml,hive-env.xml与hive-log4j.properties放回现在版本的conf下;

     启动hive;升级完成!

      

    操作中所遇bug;

    启动hive时控制台抛出[ERROR] Terminal initialization failed; falling back to unsupported java.lang.IncompatibleClassChang异常;

SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
[ERROR] Terminal initialization failed; falling back to unsupported
java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected
        at jline.TerminalFactory.create(TerminalFactory.java:101)
        at jline.TerminalFactory.get(TerminalFactory.java:158)
        at jline.console.ConsoleReader.<init>(ConsoleReader.java:229)
        at jline.console.ConsoleReader.<init>(ConsoleReader.java:221)
        at jline.console.ConsoleReader.<init>(ConsoleReader.java:209)
        at org.apache.hadoop.hive.cli.CliDriver.getConsoleReader(CliDriver.java:773)
        at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:715)
        at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:675)
        at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:615)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.hadoop.util.RunJar.main(RunJar.java:212

    原因:是因为hadoop下使用的还是旧版本的jline-0.9.94.jar

   ll$HADOOP_HOME/share/hadoop/yarn/lib/

   -rw-rw-r--. 1 hadoop hadoop   87325 Jan 29  2015 jline-0.9.94.jar

   解决办法:

   删除旧版本的jline包 ;

   将新版本hive下的jline的JAR包拷贝到hadoop的$HADOOP_HOME/share/hadoop/yarn/lib/目录下;

  cd $HADOOP_HOME/share/hadoop/yarn/lib/

   rm jline-0.9.94.jar

  cp $HIVE_HOME/lib/jline-2.12.jar ./

  启动 hive 即可!


0 0
原创粉丝点击