NonRecoverableException:没有足够的活动 tablet 服务器来创建具有请求的复制因子 3 的 table。1 tablet 服务器是活动的

NonRecoverableException: Not enough live tablet servers to create a table with the requested replication factor 3. 1 tablet servers are alive

我正在尝试使用 Impala-shell 创建 Kudu table

查询:

CREATE TABLE lol
(
  uname STRING,
  age INTEGER,
  PRIMARY KEY(uname)
)
STORED AS KUDU
TBLPROPERTIES (
'kudu.master_addresses' = '127.0.0.1'
);

CREATE TABLE t (k INT PRIMARY KEY) STORED AS KUDU
TBLPROPERTIES (
'kudu.master_addresses' = '127.0.0.1'
);

但我收到错误消息:

ERROR: ImpalaRuntimeException: Error creating Kudu table 'impala::default.t'
CAUSED BY: NonRecoverableException: Not enough live tablet servers to create a table with the requested replication factor 3. 1 tablet servers are alive.

请建议为此应该做什么。 我刚接触 Kudu。

**

NonRecoverableException: Not enough live tablet servers to create a table with the requested replication factor 3 ,出现此错误是因为在查询中 未指定复制因子

KUDU中默认复制因子=3。

如果您 运行 在查询独立集群中,在这种情况下,kudu 中只有 1 个 tablet 服务器处于活动状态(kudu tserver) 对于上面的查询复制因子应该是 1

您可以根据需要通过设置

修改复制因子

table_num_replicas(可选) - 副本数

查询:

                         CREATE TABLE lol
                         (
                           uname STRING,
                           age INTEGER,
                           PRIMARY KEY(uname)
                         )
                         STORED AS KUDU
                         TBLPROPERTIES (
                         'kudu.master_addresses' = '127.0.0.1',
                         'kudu.num_tablet_replicas' = '1'
                        );

在KUDU中对于大数据量的分区应该指定。

查询:

create table test 
(
id int not null,
code string,
primary key(id)
) 
partition by hash partitions 8 
stored as KUDU 
TBLPROPERTIES ( 
'kudu.master_addresses' = '127.0.0.1' ,
'kudu.num_tablet_replicas' = '1'
);

更多设置属性参考https://kudu.apache.org/docs/command_line_tools_reference.html

除了答案之外,您还可以将 Kudu 配置中的 "Default Number of Replicas" 设置为 1。这样您就可以避免在键入的每个命令中都设置它的麻烦。 您可以从 Cloudera Manager --> Kudu --> Configuration 访问此配置 然后搜索 "Default Number of Replicas" 您可能需要取消设置以避免出现警告消息,因为推荐设置为 3.