0849-7.1.6-如何跨集群从CDH到CDP迁移Kudu表

2021-07-05 15:26:22 浏览数 (1)

1.文档说明

在之前的文档《如何通过Hive跨集群迁移Kudu表》,通过Hive 进行跨集群迁移Kudu 表是一种效率较低但是非常通用的方式,本文主要讲述如何通过Kudu 自带的Kudu Command Line Tools 进行Kudu 表迁移。

  • 测试环境

1.CDH5.16.1、未启用Kerberos、Kudu 1.7.0

2.CDP7.1.6 、启用Kerberos、Kudu 1.12.0

2.操作步骤

2.1 操作步骤

1、首先在源集群也就是CDH5.16.1,Kudu表所在的集群中,CM>Kudu>配置>搜索gflagfile>gflagfile的Kudu 服务高级配置代码段(安全阀)中配置添加子网信任配置,并滚动重启kudu生效

代码语言:javascript复制
-trusted_subnets=0.0.0.0/0

2、 配置源集群的IP和主机名信息到目标集群中/etc/hosts

3、在CDP7.1.6集群中执行如下命令执行拷贝复制

代码语言:javascript复制
kudu table copy 55.xxx.1.137:7051,xxx.14.1.138:7051,55.xxx.1.139:7051 
impala::xxx_QUANT.DWD_INGESTION xxx-cdh01:7051

完成后检查

查看源集群表数据条数

目标集群中创建impala 关联表,然后查询验证,结果一致

代码语言:javascript复制
[xx-cdh04:21000] xxx_quant> create database xxx_quant;
[xx-cdh04:21000] xxx_quant> 
create EXTERNAL TABLE CMB_QUANT.DWD_INGESTION STORED AS KUDU TBLPROPERTIES ('kudu.master_addresses'=xx-cdh01', 'kudu.table_name'='impala::xxx_QUANT.DWD_INGESTION');

2.2用法和参数说明

用法:

代码语言:javascript复制
kudu table copy <master_addresses> <table_name> <dest_master_addresses> [-nocreate_table] [-dst_table=<table>] [-num_threads=<threads>] [-predicates=<predicates>] [-tablets=<tablets>] [-write_type=<type>]

参数解释如下:

名称

描述

类型

默认

master_addresses

以逗号分隔的源 Kudu 主机地址列表,其中每个地址的形式是"hostname:port",也可以使用集群名

string

none

table_name

源表名称

string

none

dest_master_addresses

以逗号分隔的目标 Kudu 主机地址列表,其中每个地址的形式是"hostname:port",也可以使用集群名

string

none

create_table (optional)

如果目标表不存在,是否创建目标表。

bool

TRUE

dst_table (optional)

将数据复制到的目标表的名称。如果为空字符串,则使用与源表相同的名称。

string

none

num_threads (optional)

要运行的线程数。每个线程运行自己的KuduSession。

int32

2

predicates (optional)

支持三种类型的谓词,包括"Comparison", “InList” and “IsNull”。

string

none

tablets (optional)

如果没有指定要检查的 Tablets (以逗号分隔的id列表),则检查所有的 Tablets。

string

none

write_type (optional)

如何将数据复制到目标表。“insert”、"upsert"或空字符串。如果字符串为空,则不会复制数据(create_table为true时很有用)。

string

inser

2.3 常见问题

1、执行kudu table copy 出现Scanning failed Network error: Failed to resolve address for TS 62bdb42ae7554761acb8d6aea005cefa: unable to resolve address for xxx 异常

解决办法:该问题由于无法解析源集群的hostsname 导致,配置源集群的hosts 到目标集群/etc/hosts 中即可

2、执行kudu table copy 出现End of file: Unable to send message: other end of pipe was closed 问题

解决办法:使用sudo -u kudu kudu table copy xxx:7051 tablename xxx:7051

3.参考文档

kudu table copy 命令可以将表数据复制到另一个表;这两个表可以在同一个集群中,也可以不在同一个集群中。这两个表必须具有相同的表架构,但可以具有不同的分区架构。该工具也是可以使用与源表相同的表和分区架构来创建新表。

参考文档:

https://kudu.apache.org/docs/command_line_tools_reference.html#table-copy

0 人点赞