Transwarp Inceptor 问题记录与解决

存储过程中查不到system模式下的表数据(NO_DATA_FOUND)

set ngmr.dd.local.mode.auto=false;
# 系统表实际上是mysql表的视图,默认为local模式应该会更快捷一点。但是应该有地方配置错误,所以需要关闭local模式,但是会牺牲一点查询性能

不能Rename表

set inceptor.torc.allow.rename=true;
# 星环给的解释是:rename表可能会导致丢数据,所以把该功能禁用了,需要手动打开

不能truncate表(truncate 表时报错)

Error: EXECUTION FAILED: Task DDL error HiveException: [Error 40000] Exception while processing (state=08S01,code=40000)

# 这种情况是因为我们从仓库1复制到仓库2时,所有仓库1表的元数据都同步到了仓库2,但是有些表数据并没有同步(比如tmp表,ifc表等),所以表的hdfs路径不存在,在truncate时会报该错误。解决办法就是,随便插入一条数据后再truncate即可。比如:
insert into ifc.table(data_date) values('test');

varchar及varchar2字段类型必须设定字段长度,否则会报该错误

Error: COMPILE FAILED: Semantic error: [Error 20594] Zero-length varchar2 column is not allowed (state=42000,code=20594)

varchar or varchar2 to varchar(8) or varchar2(8)
#加上字段长度就好啦。这个应该是星环加强了某些限制。

动态分区删数据问题

delete from table_t partition(day_code) where day_code = vs_run_date and xx_flag = 1;
  1. 必须要指定分区字段,也即加上partition(day_code);
  2. 必须开启参数:set hive.crud.dynamic.partition=true;

动态分区自动增分区问题

insert into table_t partition(day_code) values('1',1,'20210101');
  1. 必须要指定分区字段,也即加上partition(day_code);
  2. 必须开启参数:set hive.exec.dynamic.partition=true;

开启kerberos后,用户查表报权限问题

Error: COMPILE FAILED: Internal error HiveAccessControlException: [Error 20388] Permission denied: Principal [name=xxxxx, type=USER] does not have following privileges for operation SHOW_CREATETABLE [[SELECT with grant] on Object [type=TABLE_OR_VIEW, name=xxx.xxxxxxxxx]] (state=42000,code=20388)

这个问题可以先尝试通过管理员账号进行赋权解决。

grant ALL on table xxx.* to user xxx;

如果还不行,说明是kerberos开启的时候,有些权限没有弄好。可以尝试修改inceptor元数据库来解决

1. 登录active namenode
2. 登录mysql
3. 列出databases
mysql> show databases;
+------------------------+
| Database               |
+------------------------+
| information_schema     |
| metastore_inceptorsql1 |
| mysql                  |
| test                   |
+------------------------+
4 rows in set (0.00 sec)

4. 进入元数据库
mysql> use metastore_inceptorsql1;
Database changed
-- 查看inceptor库列表
select db_id,name from DBS;

-- 查看相应表的所有人(owner)
select OWNER 
from TBLS
where DB_ID = 'X'   --在上个语句查询
and tbl_name = 'Y'  --具体表名

-- 如果所有者不对,问题就在这里了,可以更新所有者
update TBLS
set OWNER='xxxxx'  --登录inceptor的用户名
DB_ID = 'X'
and tbl_name = 'Y'

-- 也可以直接整库更新
update TBLS set OWNER='xxxxx' where DB_ID in ('X1','X2')

-------------------------2021-05-17更----------------------------
发现有很多tos running with problems
这个问题的背景和现象是:

  1. 许可证过期,重新认证后,重启inceptor时,最后在这一步【通过TOS启动executor group1】失败。
  2. inceptor显示为down,但实际可用,executor也都正常。
  3. inceptor的daemon check显示unknowhost:none --被这个问题现象带到沟里去了

排查步骤:

  1. 由于服务正常,只不过管理界面显示异常。所以查了nn01节点的health check报错日志,也报了一堆unknowhost exception。跟界面的显示结果一致,好了,根据经验,查/etc/hosts,查/etc/resolv.conf,查hostname,但都没问题。。。还查了防火墙,但都没问题

  2. 然后在inceptor启动步骤里,分析日志,看到如下信息(其实看了很多次,不知道也没注意这个问题,直到反复排查了第1个问题n次后,才关注到这个日志)。 由此日志,我感觉应该是这一步会在k8s的虚拟dns中注入host信息,所以上面那一步报错其实问题还在这里

tos registry hostname in Service(10,Some(1),INCEPTOR,None,transwarp-6.0.2-final,INSTALLED,inceptor1,Inceptor1,KUBERNETES,true,true,false,false) 's dependencies is xxxxx
generated inceptor-executor1.yaml on [Manager]
  1. 在8180的tos界面看到很多tos不健康(Running with problems),之前出其他问题跟星环运维沟通过,他们有时候会问tos是否正常。所以我感觉也有可能是这些tos的问题。换思路,先搞定这些tos问题再看inceptor
    但是tos日志没找到,最后在星环论坛上找到一篇文章,里面有说修改配置后,重启tos的操作。那我就不修改配置,重启下某个主机的tos,神奇的是这个主机的tos好了,接着把其他有问题的节点都重启,tos都健康后,inceptor自己就好了
# 这个实际不是重启tos,好像重启或重置某些k8s相关的服务
systemctl daemon-reload && systemctl restart kubelet && systemctl restart haproxy

奇怪的知识又增加了。不过也说明自己对当下火热的k8s一窍不通,有时间有机会要去学习下。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值