已知的问题和限制
原文链接 : http://kudu.apache.org/docs/known_issues.html
译文链接 : http://cwiki.apachecn.org/pages/viewpage.action?pageId=10813650
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 。自动拆分还不可能。创建表后,可能会添加或删除范围分区。有关详细信息,请参阅 模式设计。
- 现有表中的数据当前无法自动重新分区。作为解决方法,使用新的分区创建一个新表,并插入旧表的内容。
- 丢失大多数 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 身份验证功能不正常。