KUDU 别人踩过的苦的坑和解

别人踩过的苦的坑和解

1. 坑

1、当一个tablet server被关闭超过一定的时间(默认5分钟),位于tablet server上的tablet会被移动到其它的tablet server

2、DataNode换个内存重启后,kudu的Tablet Server报错无法正常启动解决  

---------->Tablet server  修改配置  --max_clock_sync_error_usec=20000000 

3、某台tablet server 在停机一断时间后,再次启动,某些tablet server出现异常退出,查看日志报错:
打开数据文件 报”Too many open files ” 错误。

---------------->在CDH上修改 kudu文件句柄配置(采用了该方法)。
直接在cdh上修改kudu的配置,将“最大进程文件描述符”设置为: 257447 这样kudu最大能同时打开25万个文件。

4、当kudu有tserver下线或者迁移之后,旧的tserver会一直以dead状态出现,并且tserver日志中会有大量的连接重试日志,一天的错误日志会有几个G,

------------->首先保证集群是健康的(通过ksck命令)\将dead状态的server上的副本进行迁移,如果有replication factor设置为1的数据,必须在下线前手工移动数据;\只要tserver处于下线状态超过5分钟以上会自动进行副本迁移;\当所有副本都迁移完之后,ksck依然会显示有tserver不可用,如果想完全去掉这些dead状态的server,需要重启master;\最后,重启master之后在保证集群健康的前提下逐一重启tserver

5、时钟服务NTP配置不合理,会导致Kudu服务直接崩溃,建议根据官方的推荐来配置NTP,另外可以通过修改参数max_clock_sync_error_usec值,来提高Kudu对时间偏差的容忍程度

6、没有rebalance功能,需要手动做balance

7、在Impala中对Kudu表进行alter table A rename to B,只会更改impala的元数据,而不会更改任何Kudu的元数据,可以通过先修改Impala元数据alter table A rename to B 后,再修改Kudu元数据alter table A set TBLPROPERTIES(’kudu.table_name’=’B’)

8、dea通过spark代码往kudu里面建表以及插入结果数据,报了这个错误:

java.lang.IllegalArgumentException: cannot import authentication data from a different user: old='', new='XXX'

---------->

首先在/etc/init.d关闭Kudu:

[hadoop@hadoop000 init.d]$ sudo ./kudu-master stop

Stopped Kudu Master Server: [ OK ]

[hadoop@hadoop000 init.d]$ sudo ./kudu-tserver stop

Stopped Kudu Tablet Server: [ OK ]

然后进入Kudu设置文件,默认在/etc/kudu/conf下,修改master.gflagfile:

[hadoop@hadoop000 conf]$ sudo vi master.gflagfile
在里面加上

--trusted_subnets=0.0.0.0/0

--rpc_encryption=disabled

--rpc_authentication=disabled

意思是信任所有远程连接、 禁用RPC授权、禁用RPC加密,不查就不会出错

最后去/etc/init.d里重启下Kudu就行了:[hadoop@hadoop000 init.d]$ sudo ./kudu-master start

2. 限制

     kudu现在有一些限制,可能会影响到你对Schema的设计

  1. 列的数量:表的列不要超过300,建议使用少一点的列以获取更好的性能

  2. 单元的大小:在编码或压缩之前,单个单元不得大于64KB。 在Kudu完成内部复合密钥编码之后,构成复合密钥的单元限制为总共16KB。 插入不符合这些限制的行将导致错误返回给客户端。

  3. 行的大小:虽然单个单元可能高达64KB,而Kudu最多支持300列,但建议单行不要大于几百KB。

  4. 有效的标识符:表名和列名等标识符必须是有效的UTF-8序列且不超过256个字节。

  5. 不可变的主键(Immutable Primary Keys):kudu不允许更新一行的主键列

  6. 不可更改的主键(Non-alterable Primary Key):Kudu不允许在创建表后更改主键列。

  7. 不可更改的分区(Non-alterable Partitioning):Kudu不允许在创建表后更改表的分区方式,删除和增加范围分区除外

  8. 不可更改的列类型(Non-alterable Column Types):Kudu不允许修改列的类型

  9. 分区拆分(Partition Splitting):在表创建之后不能拆分、合并分区

  10. 如果查询的WHERE子句包括与查询字段进行=,<=,<,>,> =,BETWEEN或IN的比较,则Kudu直接评估条件并仅返回相关结果。这提供了最佳性能,因为Kudu仅将相关结果返回给Impala。对于诸如!=,LIKE或Impala支持的任何其他谓词类型的谓词,Kudu不会直接评估谓词。 相反,它将所有结果返回给Impala,并依赖Impala来评估剩余的谓词并相应地过滤结果。 这可能会导致性能差异,具体取决于评估WHERE子句之前和之后结果集的增量。 在某些情况下,创建和定期更新实体化视图可能是解决这些低效问题的正确解决方案。


 

3. SOP

1.官网使用的集群3台t_master 100台t_server,建议每台t_server机器设置最多1000个tablet

2.kudu文件句柄要设置根据自己业务量评估

3.kudu_tablet分区不能大于1500,大于1500后进行平衡或者扩容

4.kudu表的接入需要规范化

5.无效的kudu表进行下线

6.tablet server关闭时,tablet的移动(不能同时迁移2台)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值