如何将您的 Apache Kudu 足迹从 Cloudera 的 CDH 迁移到他们的新 CDP

图:南(来源)

总结

当我们将 Kudu 数据从 CDH 迁移到 CDP 时,我们必须使用 Kudu 备份工具来备份和恢复 Kudu 数据。

Kudu 通过使用 Apache Spark 实现的作业支持完整和增量表备份。此外,它还支持通过使用 Apache Spark 实现的还原作业从完整备份和增量备份中还原表。

我们已经在测试集群上完成了 POC,并为我们组织中的一个客户在生产集群上实现了从 CDH 到 CDP 的 kudu 迁移

** Kudu 迁移过程**

**来源:**谷歌

注意:图像可能受版权保护。以上图片仅用于知识转移。

我。备份过程

CDH集群

首先,确认黑斑羚上是否存在 kudu 表

转到 keytabs 目录:

cd /opt/cloudera/security/keytabs/

1.获取有效的keytab

[root@clairvoyant-sid-nn1 keytabs]# keynote -cut user_test.keytham user_test@clairvoyant.com

  1. 连接到 Impala Shell

impala-shell -i impala-cdh-clairvoyant -d 默认 -k — ssl — ca_certu003d/opt/cloudera/security/x509/ca-chain.cert.pem

3.使用数据库

[impala-cdh-clairvoyant:21000] 默认> 使用 cvhadoop_db;

确认kudu表数

[impala-cdh-clairvoyant:21000] hadoop\db > select count(*) from cv hadoop\db.test_event;

查询:select count(*) from cvhadoop_db.test_event

查询提交时间:2022-04-22 09:49:32(协调员:https://clairvoyant-cdh-nn3:25000)

查询进度可以在以下位置监控:https://clairvoyant-cdh-nn3:25000/query_plan?query_idu003d3e40j46e4528b109:26c7277b00000000

+ — — — — — +

| 计数(*) |

+ — — — — — +

| 20445 |

+ — — — — — +

在 0.13 秒内获取 1 行

**退出 impala-shell 并使用 hdfs keytab 执行 kinit **

1\。检查路径 /user/cv_bdr_user 下的内容

[root@clairvoyant-cdh-nn1 14521-hdfs-NAMENODE]# hdfs dfs -ls /user/cv_bdr_user/kudu-bkp

2\。 Kinit 使用 hue/impala(取决于您的游侠规则)、keytab,然后在更改表名后运行备份命令

运行以下命令开始备份过程:

spark-submit — 类 org.apache.kudu.backup.KuduBackup /opt/cloudera/parcels/CDH/lib/kudu/kudu-backup2_2.11.jar — kuduMasterAddresses clairvoyant-cdh-nn1,clairvoyant-cdh-nn2, clairvoyant-cdh-nn3 — rootPath hdfs:///user/cv_bdr_user/kudu-bkp cvhadoop_db.test_event

在哪里

• — kuduMasterAddresses 用于以逗号分隔列表的形式指定 Kudu 主机的地址。

例如 clairvoyant-cdp-nn1,clairvoyant-cdp-nn2,clairvoyant-cdp-nn3,它们是 Kudu master 的主机名。

• — rootPath 用于指定存储备份数据的路径。

• HDFS 示例:hdfs:///kudu-backups

3\。备份成功后使用 hdfs keytab kinit 然后检查 hdfs /user/cv_bdr_user/kudu-bkp 下的文件

_[root@clairvoyant-cdh-nn1 14521-hdfs-NAMENODE]# hdfs dfs -ls /user/cv_bdr_user/kudu-bkp

找到 3 件商品

drwxr-xr-x — hdfs 超组 0 2022–04–21 09:52 /user/cv_bdr_user/kudu-bkp/1723fbsdsd37ddsedd1d5ddd6dd258238542-cvhadoop_db.test_event_

4\。检查文件

[root@clairvoyant-cdp-nn1 14521-hdfs-NAMENODE]# hdfs dfs -ls /user/cv_bdr_user/kudu-bkp/1723fbsdsd37ddsedd1d5ddd6dd258238542-cvhadoop_db.test_event/1650559938445

找到 67 件商品

-rw-r — r — 3 hdfs 超组 36341 2022–04–21 09:52 /user/cv_bdr_user/kudu-bkp/1723fbsdsd37ddsedd1d5ddd6dd258238542-cvhadoop_db.test_event/1650559938445/.kudu-adata .json

-rw-r — r — 3 hdfs 超组 0 2022–04–21 09:52 /user/cv_bdr_user/kudu-bkp/1723fbsdsd37ddsedd1d5ddd6dd258238542-cvhadoop_db.test_event/1650559938445/_SUCCESS

-rw-r — r — 3 hdfs 超组 7999 2022–04–21 09:52 /user/cv_bdr_user/kudu-bkp/1723fbsdsd37ddsedd1d5ddd6dd258238542-cvhadoop_db.test_event/1650559938445/part-00000- a7126940-c30sdf3–43db-acd7-sfsd52b3c46fc0-c000.snappy.parquet

5\。转到 CDP-CM UI 并使用 BDR 工具安排 hdfs 复制

二。复制过程

运行以下步骤以启动从 CDH 到 CDP 的复制过程

步骤 1

第二步

第三步

! zoz100037](https://devpress-image.s3.cn-north-1.jdcloud-oss.com/a/6cac6c2069_0*y72r5Mmk0ChKI1IF.jpg)

6\。保存策略,然后它将复制目标(CDP 集群)的 hdfs 位置下的所有文件

7\。检查hdfs位置下复制的文件

hdfs dfs -ls /user/cv_bdr_user/kudu-restore

[root@clairvoyant-cdp-nn1 741-hdfs-NAMENODE]# hdfs dfs -ls /user/cv_bdr_user/kudu-restore//1723fbsdsd37ddsedd1d5ddd6dd258238542-cvhadoop_db.test_event/1650559938445

找到 67 件商品

-rw-r — r — 3 hdfs 超组 36341 2022–04–21 09:52 /user/cv_bdr_user/kudu-restore/1723fbsdsd37ddsedd1d5ddd6dd258238542-cvhadoop_db.test_event/1650559938445/.kudu-metadata .json

-rw-r — r — 3 hdfs 超组 0 2022–04–21 09:52 /user/cv_bdr_user/kudu-restore/1723fbsdsd37ddsedd1d5ddd6dd258238542-cvhadoop_db.test_event/1650559938445/_SUCCESS

-rw-r — r — 3 hdfs 超组 7999 2022–04–21 09:52 /user/cv_bdr_user/kudu-restore/1723fbsdsd37ddsedd1d5ddd6dd258238542-cvhadoop_db.test_event/1650559938445/part-00000- a7126940-c30sdf3–43db-acd7-sfsd52b3c46fc0-c000.snappy.parquet

8\。去impala-shell,如果数据库还没有创建,那么就拿impala keytab,

创建所需的数据库并退出 impala shell

三。恢复过程

9\。运行恢复火花命令

spark-submit — 类 org.apache.kudu.backup.KuduRestore /opt/cloudera/parcels/CDH/lib/kudu/kudu-backup2_2.11.jar — kuduMasterAddresses clairvoyant-cdp-nn1,clairvoyant-cdp-nn2, clairvoyant-cdp-nn3 — restoreOwner false — rootPath hdfs:///user/cv_bdr_user/kudu-restore cvhadoop_db.test_event — createTables true

10\。还原成功后,进入 impala shell 并使用所需的数据库并验证表计数。

[impala-cdp-prod:21000] 默认> 使用 cvhadoop_db;查询:使用 cvhadoop_db

[impala-cdp-prod:21000] cvhadoop_db> 从 cvhadoop_db.test_event 中选择计数(*);

查询:select count(*) from cvhadoop_db.test_event

查询提交时间:2022-04-22 10:29:05(协调员:https://clairvoyant-cdp-dn1:25000)

查询进度可以在:https://clairvoyant-cdp-dn1:25000/query_plan?query_idu003dc44af0c754816b28:d6e79b8f00000000

+ — — — — — +

|计数(*) |

+ — — — — — +

| 20445 |

+ — — — — — +

在 0.19 秒内获取 1 行

11\。表的计数应与源集群(CDH 集群)匹配。

可能的问题及其解决方案

  1. 如果您在恢复 kudu 备份时发现以下错误,请使用以下解决方案。

22/05/22 23:04:28 WARN scheduler.TaskSetManager: Lost task 6.0 in stage 0.0 (TID 13, clairvoyant-cdp-dn1, executor 24): java.lang.RuntimeException: 无法向 Kudu 写入 1000 行; Sample errors: Timed out: cannot complete before timeout: Batch{operationsu003d1000, tabletu003d”0c9aw3bs3452fbasdsa4cdf99074cd6046d” [0x0000000080000000000007E2, 0x0000000080000000000007E3), ignoredErrorsu003d[NOT_FOUND], rpcu003dKuduRpc(methodu003dWrite, tabletu003d0c9aw3bs3452fbasdsa4cdf99074cd6046d ,尝试 u003d 20,TimeoutTracker(超时 u003d 30000,经过 u003d 27150),跟踪摘要(27145 毫秒):已发送(20),已接收(20),延迟(20),MasterRefresh(0),AuthRefresh(0),截断:错误的

发送:(9f94ccfaa0f14c67acd5f061faaf9714,[Write,20])

收到:(9f94ccfaa0f14c67acd5f061faaf9714,[ SERVICE_UNAVAILABLE,20])

延迟:(未知,[ 写入,20 ]))}超时:在超时之前无法完成:批处理{操作 u003d 1000,平板电脑 u003d“0c9aw3bs3452fbasdsa4cdf99074cd6046d” [0x0000000080000000000007E2,0x0000000080000000000080000000007E2,0x00000000800000,错误u003d000800000,错误u003d000 ], rpcu003dKuduRpc(methodu003dWrite, tabletu003d0c9aw3bs3452fbasdsa4cdf99074cd6046d, attemptu003d20, TimeoutTracker(timeoutu003d30000, elapsedu003d27150), Trace Summary(27145 ms): Sent(20), Received(20), Delayed(20) , MasterRefresh(0), AuthRefresh(0), 截断: false

发送:(9f94ccfaa0f14c67acd5f061faaf9714,[ 写入,20 ])接收:(9f94ccfaa0f14c67acd5f061faaf9714,[ SERVICE_UNAVAILABLE,20 ])

解析度

— 类 spark.yarn.executor.memoryOverheadu003d10GB

例子

spark-submit — 类 org.apache.kudu.backup.KuduRestore /opt/cloudera/parcels/CDH/lib/kudu/kudu-backup2_2.11.jar — 类 spark.yarn.executor.memoryOverheadu003d10GB — kuduMasterAddresses clairvoyant-cdp-nn1,clairvoyant-cdp-nn2,clairvoyant-cdp-nn3 — restoreOwner false — rootPath hdfs:///user/cv_bdr_user/kudu-restore cvhadoop_db.test_event — createTables false

2\。如果您在恢复 kudu 备份时发现以下错误

检测到错误:

databaseu003dcvhadoop_db 数据库已存在且与导出的数据库不匹配。数据库 URI 不匹配 — 当前:hdfs://nameservice1/warehouse/tablespace/external/hive/cvhadoop_db.db 导出:/user/hive/warehouse/cvhadoop_db.db

数据库:1

表:265

分区:27395

功能:0

索引:0

统计:31

检测到错误:DATABASE_MISMATCH_ERROR

解析度

我们使用“--createTables” -false 因为表已经创建

3\。如果您在执行上述过程后观察到计数不匹配

可能的原因

1\。备份时在源集群上运行的作业。

2\。源表问题

解析度

1\。在进行备份之前停止作业。

2\。删除目标主机上的表并尝试再次重新运行整个过程。

希望这将帮助您将数据从 CDH 移动到 CDP 环境。

点击阅读全文
Logo

华为、百度、京东云现已入驻,来创建你的专属开发者社区吧!

更多推荐