Apache Kudu 从 CDH 迁移到 CDP
如何将您的 Apache Kudu 足迹从 Cloudera 的 CDH 迁移到他们的新 CDP 图:南(来源) 总结 当我们将 Kudu 数据从 CDH 迁移到 CDP 时,我们必须使用 Kudu 备份工具来备份和恢复 Kudu 数据。 Kudu 通过使用 Apache Spark 实现的作业支持完整和增量表备份。此外,它还支持通过使用 Apache Spark 实现的还原作业从完整备份和增量备
如何将您的 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
- 连接到 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 集群)匹配。
可能的问题及其解决方案
- 如果您在恢复 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 环境。
更多推荐
所有评论(0)