Kudu表的设计和局限性
在创建表之后,主键可能不会更改。您必须删除并重新创建一个表以选择新的主键。
构成主键的列必须首先在模式中列出。
行的主键可能不会使用该UPDATE功能进行修改。要修改一个行的主键,该行必须被删除,并用修改后的键重新插入。这样的修改是非原子的。
包含DOUBLE,,FLOAT或BOOL类型的列不被允许作为主键定义的一部分。另外,作为主键定义一部分的所有列都必须是NOT NULL。
自动生成的主键不受支持。
由Kudu完成的内部复合键编码后,组成主复合键的单元总数被限制在16KB。
列不支持DECIMAL,CHAR,VARCHAR,DATE和ARRAY等复杂类型。
现有列的类型和可空性不能通过更改表来更改。
表格最多可以有300列。
表表格必须有奇数个副本,最多7个。
复制因子(在表创建时设置)不能更改。
单元格(individual values)在编码或压缩之前单元格不能大于64KB。
其他使用限制Kudu主要是为分析用例设计的。如果单个行包含多个千字节的数据,则可能会遇到问题。
二级索引不受支持。
多行事务不受支持。
关系特性,如外键,不被支持。
标识符(如列名和表名)被限制为有效的UTF-8字符串。此外,强制执行最大长度为256个字符。
删除列不会立即回收空间。
没有办法手动运行压缩,但删除表将立即收回空间。
分区限制必须使用简单或复合主键手动将表格预先拆分为tablets。自动分割还不可能。在创建表之后,可以添加或删除范围分区。
现有表中的数据目前不能自动重新分区。解决方法是用新分区创建一个新表,并插入旧表的内容。
失去大多数复制的tablets (例如3个中的1个)需要手动干预才能修复。
集群管理机架感知不受支持。
多数据中心不受支持。
不支持滚动重启。
服务器管理生产部署应该为tablet服务器配置至少4GB的内存,理想情况下,接近数据和tablet的规模限制时需要超过16GB 。
预写日志(WAL)只能存储在一个磁盘上。
不能容忍磁盘故障,一旦检测到,tablets 服务器就会崩溃。
具有不可恢复数据的故障磁盘需要格式化该平板电脑服务器的所有Kudu数据,然后才能重新启动。
数据目录不能被添加/删除; 所有的都必须重新格式化以更改目录集。
tablet服务器不能更改地址/端口。
KUDU有最新的NTP的硬要求。Kudu Master和tablet服务器在不同步时会崩溃。
Kudu发行版仅用NTP进行测试。像Chrony这样的其他时间同步提供者可能会也可能不会工作。
规模推荐的tablet服务器最大数量为100。
建议的最大Master 数是3。
建议的最大存储数据量,复制后和压缩后,每个tablet服务器是8TB。
建议每个tablet服务器的最大数量是2000。
在创建表时,每个tablet的最大数量是60个,即复制后。
复制和备份限制Kudu目前不包含任何内置的备份和恢复功能。鼓励用户使用Spark或Impala等工具根据需要导出或导入表格。
安全限制授权只能在全系统的粗粒度级别上使用。表级,列级和行级授权功能不可用。
休息时的数据加密不是直接建立在Kudu的。通过使用本地块设备加密软件,如静态加密,可以实现对Kudu静态数据的加密dmcrypt。
Kudu服务器Kerberos主体必须遵循这一模式kudu/@DEFAULT.REALM。不支持配置备用Kerberos主体。
Kudu与Apache Flume的集成不支持写入需要Kerberos身份验证的Kudu群集。