欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

Kudu表的设计和局限性

程序员文章站 2022-06-26 10:29:22
架构 主键 在创建表之后,主键可能不会更改。您必须删除并重新创建一个表以选择新的主键。 构成主键的列必须首先在模式中列出。 行的主键可能不会使用该UPDATE功能进行修改。要修改一个行...
架构 主键

在创建表之后,主键可能不会更改。您必须删除并重新创建一个表以选择新的主键。

构成主键的列必须首先在模式中列出。

行的主键可能不会使用该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群集。