Kudu运维篇:CDH6 kudu跨集群迁移数据同步(一)

一、前言

  • 在大数据环境中,跨集群的数据迁移和同步是非常重要的操作。本文将详细介绍如何在 CDH6 集群中使用 Kudu 进行跨集群的数据迁移和同步。

二、操作步骤

1、下载Apache Kudu新版本

  • 正如你所看到的,CDH6.0 kudu命令并不支持copy…所以我们必须下载安装新的kudu二进制文件,解决copy问题,新的kudu分享见下方。(CDH 6.3才被支持
    在这里插入图片描述
    在这里插入图片描述

链接:https://pan.baidu.com/s/1lFx1uZEii4zQ4x7Xyz2tUQ
提取码:C3hp

2、修改配置文件

  • 配置 Kudu 的 GFlag 配置文件,以表示信任所有子网。这样可以确保源集群和目标集群之间的通信顺畅。并滚动重启 Kudu 服务以使配置生效。
    在这里插入图片描述

3、绑定主机名信息

  • 更新目标集群的主机名信息,编辑目标集群中的 /etc/hosts 文件,添加源集群的 IP 和主机名信息

4、解压新版本kudu

  • 下载解压新版本kudu二进制文件,+x执行权限。
tar -xf kudu.tar -C /app
chmod +x /app/kudu

5、创建相同表结构

CREATE TABLE mid.test_table (
    id STRING,
    order_unit_no STRING,
    brand_no STRING,
    store_no STRING,
    item_no STRING,
    size_no STRING,
    balance_qty INT,
    transit_in_qty INT,
    in_diff_qty INT,
    guest_bad_qty INT,
    original_bad_qty INT,
    bad_transit_qty INT,
    bad_diff_qty INT,
PRIMARY KEY (id) )
STORED AS KUDU;

6、 执行数据复制

kudu table copy kudu_master:7051,kudu_master:7051,kudu_master:7051 impala::xxx.xxx kudu_master:7051,kudu_master:7051,kudu_master:7051 -nocreate_table -dst_table=impala::xxx.xxx -num_threads=35 -write_type=upsert

在这里插入图片描述

-nocreate_table:表示目标集群中已经存在目标表,不需要创建新表。
-num_threads=35:指定并发线程数为 35。
-write_type=upsert:使用 UPSERT 操作类型。

  • 用法和参数说明
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>]

在这里插入图片描述

7、 检查数据是否一致在这里插入图片描述

三、编写脚本进行同步

#!/bin/bash

#格式: 生产kudu表:测试kudu表

prd_kudu_tb="""
mid.prd_table_t1:mid.sit_table_t1
"""

arr=($prd_kudu_tb)
length=${#arr[@]}
current=1

echo "总共有${length}张表需要同步."

for i in $prd_kudu_tb; do
        prd_tb=$(echo $i | awk -F':' '{print $1}')
        sit_tb=$(echo $i | awk -F':' '{print $2}')
        echo -e "---进度:${current}/${length},时间:$(date "+%Y-%m-%d %H:%M:%S")---$prd_tb---"
        #echo "delete kudu 测试表."
        #impala-shell -i 192.168.31.30:21000 -l -u hive --ldap_password_cmd='echo -n xHeGyZkpZciolTbz' --auth_creds_ok_in_clear -q "delete from  ${sit_tb}"
        /app/bin-release/kudu table copy xxx:7051,xxx:7051,xxx:7051  impala::$prd_tb xxx:7051,xxx:7051,xxx:7051 -nocreate_table -dst_table=impala::$sit_tb -num_threads=35 -write_type=upsert >> /dev/null
        echo -e "\n"
        echo "INVALIDATE METADATA."
        impala-shell -i 192.168.31.30:21000 -l -u hive --ldap_password_cmd='echo -n xHeGyZkpZciolTbz' --auth_creds_ok_in_clear -q "INVALIDATE METADATA ${sit_tb}"
        echo -e "\n"
        let current=current+1
done

在这里插入图片描述

四、常见问题

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

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

  • 18
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值