Hive 1.x升级hive2.1.1全过程及与HBase的互通

1. 问题背景

在构建的大数据平台上(相关组件版本Hadoop 2.8, hive 1.2.2, hbase 1.2.6) 利用hive-hbase-handler.jar实现hive和hbase的数据互通时,在hive中输入命令后总是报错,

先是Cannot find class 'org.apache.hadoop.hive.bhase.HBaseStorageHandler, 通过tar -tf $HIVE_HOME/lib/hive-hbase-handler.jar确认这个类存在后,继续执行,又报

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. org.apache.hadoop.hbase.HTableDescriptor.addFamily(Lorg/apache/hadoop/hbase/HColumnDescriptor;)V

通过搜索的结果居然是,hive1.2版本只支持hbase 0.94及更低版本,hbase1.2.6需要hive 2.x才支持。如果要支持hbase1.2.6, 需要重新编译hive 才行。详见hive社区关于针对问题的讨论及问题跟踪:https://issues.apache.org/jira/browse/HIVE-10990

刚要从apache hive下源代码,浏览中发现hive已经有2.x版本了,最高已到2.3,考虑到兼容等保险期间,果断下载了hive-2.1.1  http://mirrors.hust.edu.cn/apache/hive/stable-2/

于是原本要源码编码就省掉了,转为hive升级并与先前meta数据兼容。


2.  升级步骤

2.1  环境变量设置和目录创建

备份原来的hive-1.2.2, 并把新下的包解压至原目录下,改名为hive, 如绝对路径 /home/hadoop/bigdata/hive

因路径和先前保持一致,HIVE_HOME, PATH原来的设置都不用改,HDFS中hive warehouse的目录等也都不用改,只需要在新的hive 目录下创建配置中使用到的几个目录即可,如iotmp, log, 

2.2  mysql 相关的修改 ( mysql本身没改,原来设置的数据库用户、授权等本次都不受影响)

2.2.1 metadata升级

hive 的metadata存在mysql中,对应的metadata版本也是1.2.2的,升级后启动hive时会作metadata版本检查,我们需要对metadata进行升级。好在hive中已自带了各个版本的升级脚本,在hive/scripts/metastore/upgrade/mysql/ 中没有1.2 --> 2.1的,但有1.2->2.0, 2.0->2.1的,可以直接使用。对应目录下还有README说明

简单来说,操作如下:省略原metadata备份的过程,主要是防止升级过程中出错导致数据丢失,再就是可以作为升级后的版本确认是否真正升级成功到了2.1.

进入 hive/scripts/metastore/upgrade/mysql目录,然后在命令行中hive登录,show databases;  use metadata ;  

> source /home/hadoop/bigdata/hive/scripts/metastore/upgrade/mysql/upgrade-1.2.0-to-2.0.0.mysql.sql   //  使用$HIVE_HOME无效,报找不到文件,用绝对路径没问题

> source /home/hadoop/bigdata/hive/scripts/metastore/upgrade/mysql/upgrade-2.0.0-to-2.1.0.mysql.sql

看到界面上显示一系列的升级日志并且过程不报错,基本就说明metadata升级成了。

备注:如果是新的metadata,不涉及升级过程,需要合作 hive的 schematool进行初始化: schematool -dbType mysql -initSchema

2.2.2  安装mysql ODBC jar 

把原hive/lib下mysql-connector相关的包copy进新hive/lib, 结果如下:

-rw-r--r-- 1 hadoop hadoop 915836  1月

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值