不生产博客,只是官网的搬运工
https://docs.cloudera.com/documentation/enterprise/5-16-x/topics/kudu_limitations.html
schema设计限制
主键:
1.表创建后,主键不能更改,必须drop表重新创建指定主键
2.创表的时候,主键必须在最前边
3.主键不能通过update更新,想要修改主键,必须删除行,然后重新插入,而且这种操作不是原子的
4.不支持自动生成主键,有内置函数uuid可以使用
5.联合主键由kudu编码后,大小不能超过16kb
cells
在编码和压缩前,任何字段值不能超过64kb,由kudu编码后,联合主键不能超过16k,超过将报错
字段
1.默认情况下,kudu不允许超过300字段,建议较少列,性能最佳
2.不支持char,varchar,date(支持timestamp),复杂数据类型,例如array
3.现有列的类型和是否可为空不可修改
4.decimal的精度不可修改
5.删除一列不会立即释放空间,需要首先压缩(有关系吗?)
表
1.副本数必须是奇数,最多为7
2.副本数不能被修改
3.无法手动执行压缩,但是删除表会立即释放空间(看来删字段或删表和压缩有关)
别的使用限制:
1.不支持二级索引(除了主键索引)
2.不支持多行事务(insert into ... select 失败时,已插入的数据无法回滚删掉)
3.不支持关系,比如外键
4.表名、列名仅支持部分utf8,最大为256字符
分区限制
1.表必须根据一个主键or联合主键被预先切成tablet,不支持自动切。表被创建后不支持修改分区字段,支持添加和删除range分区(意思分区表,分区字段需提前定义好,kudu不会自动分)
2.已经存在的表不支持自动重新分区,只能创新表,重新指定,然后导数据
3.丢掉副本,比如3个丢一个,必须手动干预才能修复(不是丢了,会在新节点再来份副本以满足副本数,必须手动rebalnce?)
scale建议和限制
1.建议tablet server最多为100台
2.建议master最多3台
3.建议每个tablet server最大数据为8T(压缩后)
4.建议每台tablet server的tablet数为1000,最多2000
5.创表时,建议每个tablet server上每个表的talbet数最大为60,也就是3节点的话,3副本,创表分区最大60,这样每个单tablet server上该表的tablets也就为60
6.建议每个tablet最大为50G,超出后,可能压缩和启动有问题
7.建议单tablet的大小小于10G
server管理限制
1.部署至少4G内存,理想最少16G
2.wal日志只能被存储在一块盘上
3.不能正常停用tablet server(cdh不是可以?)
4.tablet srever不能修改ip、port
5.kudu对ntp有严格要求,确实,节点刚恢复,ntp手动同步下,得一会才能启动kudu,要不然起不来
集群管理限制
1.不支持机架识别(不知道啥玩意儿)
2.不支持多数据中心(不知道啥玩意儿)
3.不支持滚动重启
4.集群第一次启动时,所有master必须启动
impala集成限制(这个得好好掰扯掰扯)
1.创表,主键得在别的字段前边(这个简直大坑,sqoop导别的数据库库数据到kudu,不能insert into select * from ..,得把所有字段全列出来,因为有的顺序变了)
2.无法更新主键的值,这个前面主键限制有说
3.不支持varchar和复杂数据类型
4.当使用impala外部表时,kudu表名或者字段名包含大写或者非ASCII码必须表起别名
字段重命名
5.用impala更新、插入和删除不支持事务,如果sql中途失败,不能通过回滚恢复
6.单个查询的最大并行度受限与tablet数,为了更好的性能,对于大表,每个tablet server上最少10个tablet
impala创建kudu表不支持的关键词
partitioned(?partitioned by hash(...)不是吗)
location
rowformat
安全限制
授权只是能访问kudu还是不能访问kudu,不支持细粒度的库、表、字段
但通过给Impala授权,可以控制,但是如果通过kudu api不受权限控制