# 已知的问题和限制

原文链接 : [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/&lt;HOST&gt;@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** 身份验证功能不正常。