# 已知的问题和限制
原文链接 : [http://kudu.apache.org/docs/known_issues.html](http://kudu.apache.org/docs/known_issues.html)
译文链接 : [http://cwiki.apachecn.org/pages/viewpage.action?pageId=10813650](http://cwiki.apachecn.org/pages/viewpage.action?pageId=10813650)
贡献者 : [小瑶](/display/~chenyao) [ApacheCN](/display/~apachecn) [Apache中文网](/display/~apachechina)
## Schema ( 架构 )
### Primary keys ( 主键 )
* 创建表后,主键可能不会更改。您必须删除并重新创建表以选择新的主键。
* 构成主键的列必须首先列在模式中。
* 一行的主键可能不会使用 **UPDATE** 功能进行修改。要修改行的主键,必须删除该行并使用修改的密钥重新插入。这样的修改是非原子的。
* 不能使用 **DOUBLE** , **FLOAT** 或 **BOOL** 类型的列作为主键定义的一部分。另外,作为主键定义的一部分的所有列都必须为 NULL 。
* 不支持自动生成的主键。
* 组合复合主键的单元在 **Kudu** 完成的内部复合密钥编码后,总共限制在16KB。
### Columns ( 列 )
* **DECIMAL**,**CHAR**,**VARCHAR**,**DATE** 和 **ARRAY** 等复杂类型不受支持。
* 不能通过更改表来更改现有列的类型和可空性。
* 表格最多可以有 **300** 列。
### Tables ( 表 )
* 表必须有奇数个副本,最多 **7** 个。
* 无法更改复制因子(在表创建时设置)。
### Cells (individual values) ( 单元格 ( 个体值 ))
* 在编码或压缩之前,单元格不能大于 **64KB** 。
### Other usage limitations ( 其他使用限制 )
* **Kudu** 主要用于分析用例。如果单行包含多个千字节的数据,则可能会遇到问题。
* 不支持辅助索引。
* 不支持多行事务。
* 不支持关系功能,如外键。
* 诸如列和表名称的标识符被限制为有效的 **UTF-8** 字符串。另外,执行最大长度为 **256** 个字符。
* 删除列不会立即回收空间。**Compaction **必须先运行。
* 没有办法手动运行压缩,但删除表将立即回收空间。
## Partitioning Limitations ( 分区限制 )
* 表必须使用简单或复合主键手动预分割成 **tablets **。自动拆分还不可能。创建表后,可能会添加或删除范围分区。有关详细信息,请参阅 [模式设计](/pages/viewpage.action?pageId=10813632)。
* 现有表中的数据当前无法自动重新分区。作为解决方法,使用新的分区创建一个新表,并插入旧表的内容。
* 丢失大多数 **replicas** 的 **tablets **(例如 **3** 中剩下的 **1** 个)需要手动干预才能修复。
## Cluster management ( 集群管理 )
* **Rack awareness** ( 机架意识 ) 不受支持。
* 不支持 **Multi-datacenter** ( 多数据中心 )。
* 不支持 **Rolling restart** ( 滚动重新启动 )。
## Server management ( 服务器管理 )
* 生产部署应为 **tablet servers** 配置至少 **4GB** 的内存,理想情况下应为 **10GB** 以上。
* 写入日志(**WAL**)只能存储在一个磁盘上。
* 不能容忍磁盘故障,一旦检测到 **tablet server** 就会崩溃。
* 无法恢复数据的磁盘故障需要格式化该**tablet server**的所有 **Kudu** 数据,才能再次启动。
* 数据目录无法 添加/删除 ;所有这些都必须重新格式化以更改目录集。
* **tablet servers** 无法正常 **decommissioned** 。
* **tablet servers** 无法更改地址/端口。
* **Kudu** 对于最新的 **NTP** 具有严格的要求。 **Kudu**的**master** 和**tablet servers**在不同步时会崩溃。
* **Kudu** 版本只能使用 **NTP** 进行测试。其他时间同步提供商,如 **Chrony** 可能或可能不工作。
## Scale ( 规模 )
* 推荐的最大数量的 **tablet servers** 是**100**。
* 建议的最大 **masters** 数是 **3** 。
* 推荐的最大数量的存储数据,复制后和压缩后每个 **tablet server** 是 **4TB**。
* 每个 **tablet server **的最大平均 **tablets** 推荐数量为 **1000 **次,**post-replication** 。
* 每个 **tablet server** 的每个表的最大 **tablet** 数是 **60**,复制后,创建表。
## Replication and Backup Limitations ( 复制和备份限制 )
* **Kudu** 当前不包括用于备份和还原的任何内置功能。鼓励用户使用 **Spark** 或 **Impala** 等工具,根据需要导出或导入表格。
## Security Limitations ( 安全限制 )
* 授权仅在全系统,粗粒度级别提供。表级,列级和行级授权功能不可用。
* 据报道,**Kudu** 已经报告在使用本地块设备加密(例如 **dmcrypt **)的系统上正确运行 **Kudu** 。
* **Kudu** 服务器 **Kerberos** **principals **必须遵循模式 **kudu/<HOST>@DEFAULT.REALM** 。不支持配置备用 **Kerberos principal **。
* **Kudu** 与 **Apache** **Flume** 的集成不支持写入需要 **Kerberos** 认证的 **Kudu** 集群。
* 首次联系群集时,**Kudu** 客户端实例将检索身份验证令牌。这些令牌在一周后到期。使用单个 **Kudu** 客户端实例超过一周仅由 **C ++** 客户端支持,但不受 **Java** 客户端的支持。
## Other Known Issues ( 其他已知问题 )
以下是 **Kudu** 当前版本的已知错误和问题。他们将在以后的版本中解决。请注意,此列表并不详尽,仅用于沟通最重要的已知问题。
* 如果 **Kudu master** 配置了 **-log_force_fsync_all** 选项,则 **tablet server** 和客户端将经历频繁的超时,并且集群可能无法使用。
* 如果 **tablet servers** 的 **tablet** 数量很多,可能需要几分钟才能启动。建议将每台服务器的 **tablet** 数量限制在 **100** 个以下。在分割表格时考虑这个限制。如果您注意到启动时间较慢,则可以监控 **Web UI** 中每个服务器的 **tablets** 数量。
* 在 **hostname** 中包含大写字母的 **hosts** 上,**Kerberos** 身份验证功能不正确。
* 如果在 **krb5.conf** 中配置了 **rdns = false** ,则 **Kerberos** 身份验证功能不正常。