已知问题和限制
置顶先说一个kudu-1508的bug,如果你的服务器操作系统为Redhat或Centos 6.9以下,那么极有可能会触发该bug,会导致kudu重启时花费很长时间进行log_block_manager的读取,我这边kudu有1.8T的数据,重启后花了两个小时才好。在进行log_block_manager读取的时候,kudu停止对外服务,7050和8050端口全部处于关闭状态。若需要用kudu,系统一定要用6.9版本及上,若你的系统在6.9以下,请选择合适的时间进行kudu的重启,避免影响业务,稳妥一些。
架构
主键
-
创建表后,可能不会更改主键。您必须删除并重新创建表以选择新的主键。
-
必须首先在架构中列出构成主键的列。
-
使用该
UPDATE
功能可能无法修改行的主键。要修改行的主键,必须删除该行并使用修改后的键重新插入。这种修改是非原子的。 -
带有
DOUBLE
,FLOAT
或BOOL
类型的列不允许作为主键定义的一部分。此外,作为主键定义一部分的所有列必须是NOT NULL
。 -
不支持自动生成的主键。(不过我们一般都是用java client向kudu中写数,可以在代码里控制)
-
在Kudu完成内部复合键编码之后,构成复合主键的单元限制为总共16KB。
列
-
不支持CHAR,VARCHAR,DATE和ARRAY等复杂类型。
-
通过更改表格无法更改现有列的类型和可为空性。
-
DECIMAL
通过更改表格无法更改列的精度和比例。 -
表最多可包含300列。
表
-
表必须具有奇数个副本,最多为7个。
-
复制因子(在表创建时设置)无法更改。
细胞(个体价值)
-
在编码或压缩之前,单元格不能大于64KB。
其他使用限制
-
Kudu主要用于分析用例。如果单行包含多个千字节的数据,则可能会遇到问题。
-
不支持二级索引。
-
不支持多行事务。
-
不支持关键功能,如外键。
-
列和表名等标识符仅限于有效的UTF-8字符串。此外,最大长度为256个字符。
-
删除列不会立即回收空间。压缩必须先运行。
-
无法手动运行压缩,但删除表将立即回收空间。
分区限制
-
必须使用简单或复合主键手动将表格预拆分为平板电脑。自动拆分尚不可行。创建表后,可以添加或删除范围分区。有关更多信息,请参阅 架构设计。
-
现有表中的数据当前无法自动重新分区。解决方法是,使用新分区创建一个新表并插入旧表的内容。
-
丢失大部分复制品的平板电脑(例如3个中剩余1个)需要手动干预才能修复。
集群管理
-
不支持机架感知。
-
不支持多数据中心。
-
不支持滚动重启。
服务器管理
-
生产部署应为平板电脑服务器配置至少4GB内存,理想情况下,在接近数据和平板电脑规模限制时,应配置超过16GB内存。
-
预写日志(WAL)只能存储在一个磁盘上。
-
磁盘故障是不能容忍的,一旦检测到平板电脑服务器就会崩溃。
-
具有不可恢复数据的磁盘失败需要格式化该平板电脑服务器的所有Kudu数据,然后才能再次启动它。
-
无法添加/删除数据目录; 必须重新格式化所有目录才能更改目录集。
-
平板电脑服务器无法正常退役。
-
平板电脑服务器无法更改地址/端口。
-
Kudu对于拥有最新的NTP有着严格的要求。Kudu主机和平板电脑服务器在不同步时会崩溃。
-
Kudu版本仅使用NTP进行测试。其他时间同步提供商如Chrony可能会或可能不会工作。
规模
-
建议的平板电脑服务器最大数量为100。
-
建议的最大主人数是3。
-
每台平板电脑服务器的建议最大存储数据量,复制后和压缩后压缩为8TB。
-
每台平板电脑服务器的建议最大平板电脑数量为2000,复制后。
-
在创建表时,每个平板电脑服务器的每个表的最大平板电脑数为60,复制后。
复制和备份限制
-
Kudu目前不包含任何用于备份和恢复的内置功能。鼓励用户根据需要使用Spark或Impala等工具导出或导入表。
安全限制
-
授权仅适用于系统范围的粗粒度级别。表级,列级和行级授权功能不可用。
-
静态数据加密不直接内置于Kudu中。可以通过使用本地块设备加密软件来实现对静止的Kudu数据的加密
dmcrypt
。 -
Kudu服务器Kerberos主体必须遵循该模式
kudu/<HOST>@DEFAULT.REALM
。不支持配置备用Kerberos主体。 -
Kudu与Apache Flume的集成不支持写入需要Kerberos身份验证的Kudu集群。
-
通过捻IPKI生成的服务器证书是不兼容的 BouncyCastle的版本1.52和更早版本。有关详细信息,请参阅 KUDU-2145。
其他已知问题
以下是当前发布的Kudu的已知错误和问题。它们将在以后的版本中解决。请注意,此列表并非详尽无遗,仅用于传达最重要的已知问题。
-
如果Kudu主站配置了该
-log_force_fsync_all
选项,则平板电脑服务器和客户端将经历频繁超时,并且群集可能变得无法使用。 -
如果平板电脑服务器的平板电脑数量非常多,则可能需要几分钟才能启动。建议将每台服务器的平板电脑数量限制为100或更少。预分割表时请考虑此限制。如果您发现启动时间较慢,则可以在Web UI中监控每台服务器的平板电脑数量。
-
Kerberos身份验证在主机名中包含大写字母的主机上无法正常运行。
-
如果
rdns = false
配置了Kerberos身份验证,则无法正常运行krb5.conf
。