ambari安装hive以mysql作为元数据存储建表失败的解决办法

这几天项目上线,需要新安装hive在生产环境上,元数据准备就直接用mysql进行存储,因为行内生产环境肯定不能随随便便就安装一个mysql,所有的数据必须由DBA数据中心进行申请操作,所以我们向DBA提交了建库申请,DBA同事也帮我们建好了hive的元数据存储库,继而我们直接在ambari进行傻瓜式安装hive填上了相应的数据库名,用户名,表名等等,测试连接通过,直接next,但是在最后deploy后,安装hiveserver2节点出现Waring,刚开始因为提示的是警告我们直接忽略了,重启集群后发现hive安装失败。

查看那个警告日志,里面提示“该表状态没有主键”,经过讨论最后找出了问题所在,DBA的数据库因为权限问题所以限制的比较严格,所有表的创建必须有主键,但是很可能hive自动创建的那57张表中可能有没有主键的表,导致mysql创建的表并不全,最后问题出现。

表名:

COMPLETED_TXN_COMPONENTS
NEXT_COMPACTION_QUEUE_ID
NEXT_LOCK_ID
NEXT_TXN_ID
TXN_COMPONENTS
WRITE_SET

我们在测试环境上连上mysql,使用下面语句:

select distinct table_name from columns where  TABLE_SCHEMA = 'hive' and table_name not in (
select distinct table_name from COLUMNS 
where TABLE_SCHEMA = 'hive' and (column_key  = 'PRI' or column_key = 'UNI')
)

查出来有六张表是没有限制主键的,看了它的表结构后,我们大胆的在测试环境上手动给这六张表添加了主键,当时选择添加主键的字段都是形式ID这类的,添加完之后在测试环境上进行了多次测试,发现主键添加后并不影响hive运行。
针对测试环境得出来的结论和与DBA讨论的结果,我们商量出下面一个解决办法,首先在集群本地安装一个没有限制的临时mysql用来安装hive,在几个hive客户端和服务端建立域名映射,修改如下:
10.20.148.20 dbhost

然后直接用hive指向这个mysql进行安装,因为权限是全部放开的,所以hive安装后正常,为了之后迁移方便,这个临时数据库的用户名和表名,端口等等都是与DBA数据库那一端一样的。

alter table COMPLETED_TXN_COMPONENTS add primary key COMPLETED_TXN_COMPONENTS(CTC_TXNID);
alter table NEXT_COMPACTION_QUEUE_ID add primary key NEXT_COMPACTION_QUEUE_ID(NCQ_NEXT);
alter table NEXT_LOCK_ID add primary key NEXT_LOCK_ID(NL_NEXT);
alter table NEXT_TXN_ID add primary key NEXT_TXN_ID(NTXN_NEXT);
alter table TXN_COMPONENTS add primary key TXN_COMPONENTS(TC_TXNID);
alter table WRITE_SET add primary key WRITE_SET(WS_TXNID);

安装完成之后我们手动为没有主键的表添加上了主键,测试也是正常。最终让DBA将这个临时数据库的hive元数据全部迁移到DBA中,重启集群之后,运行正常,问题解决。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值