将 Kudu 数据迁移到 CDP

这是CDH/HDP/Apache Hadoop迁移到CDP系列之一,如对迁移感兴趣,请关注该系列之前博客《使用 Replication Manager 迁移到CDP 私有云基础》、《将数据迁移到CDP 私有云基础的数据迁移用例》、《将Hive数据迁移到CDP》。

了解如何将 Kudu数据从 CDH 迁移到 CDP

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

1.       使用 kudu-backup-tools.jar Kudu 备份工具备份 Kudu 中的所有数据。

2.       在旧集群中的新集群中手动应用任何自定义 Kudu 配置。

3.       将备份的数据复制到目标 CDP 集群。

4.       使用 Kudu 备份工具恢复备份 Kudu 数据。

1.  在 Kudu 中备份数据

您可以使用Kudu 备份工具kudu-backup-tools.jar 备份Kudu 中的所有数据。

Kudu 备份工具运行 Spark 作业,该作业会根据您指定的内容构建备份数据文件并将其写入 HDFS AWS S3。请注意,如果您要备份到 S3,则必须提供 S3 凭据以进行 spark-submit,如指定凭据以从 Spark 访问 S3 中所述

Kudu 备份工具在第一次运行时为您的数据创建完整备份。随后,该工具会创建增量备份。

重要的

增量备份和恢复功能仅适用于 CDH 6.3.0 及更高版本。因此,如果您有活动的摄取过程,例如 Spark 作业、Impala SQL 批处理或 Nifi Kudu 中插入或更新数据,您可能需要在开始完整备份之前暂停这些过程,以避免在开始 Kudu 备份过程后丢失数据更改.

运行以下命令以启动备份过程:

spark-submit --class org.apache.kudu.backup.KuduBackup <path to kudu-backup2_2.11-1.12.0.jar> \
--kuduMasterAddresses <addresses of Kudu masters> \
--rootPath <path to store the backed up data> \
<table_name>


在哪里

·         --kuduMasterAddresses用于将 Kudu 大师的地址指定为逗号分隔的列表。例如, master1-host,master-2-host,master-3-host哪些是 Kudu 大师的实际主机名。

·         --rootPath用于指定存储备份数据的路径。它接受任何 Spark 兼容的路径。

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

o AWS S3 示例: s3a://kudu-backup/

如果您正在备份到 S3 并看到线程“main”中的异常java.lang.IllegalArgumentException:路径必须是绝对的错误,请确保 S3 路径以正斜杠/)结尾。

·         <table_name> 可以是要备份的表或表列表。

例子:

spark-submit --class org.apache.kudu.backup.KuduBackup /opt/cloudera/parcels/CDH-7.2.1-1.cdh7.2.1.p0.4041380/lib/kudu/kudu-backup2_2.11.jar \
--kuduMasterAddresses cluster-1.cluster_name.root.hwx.site,cluster-2.cluster_name.root.hwx.site \
--rootPath hdfs:///kudu-backups \


my_table

2. 将 Kudu 数据恢复到新集群中

Kudu中备份数据后,您可以将数据复制到目标 CDP 集群,然后使用 Kudu备份工具将其恢复。

如果您在旧集群中应用了任何自定义 Kudu 配置,那么您必须手动在目标集群中应用这些配置。

如果您更改了 的值tablet_history_max_age_sec并计划在目标集群上运行 Kudu 的增量备份,我们建议将其重置tablet_history_max_age_sec为默认值 1 周(请参阅https://issues.apache.org/jira/browse/KUDU-2677)。

常用修改配置标志的示例:

·         rpc_max_message_size

·         tablet_transaction_memory

·         rpc_service_queue_length

·         raft_heartbeat_interval

·         heartbeat_interval_ms

·         memory_limit_hard_bytes

·         block_cache_capacity_mb

手动应用自定义配置后,重新启动 Kudu 集群。

1.       通过以下方式之一将备份的数据复制到目标 CDP 集群:

o 使用 distcp

sudo -u hdfs hadoop distcp hdfs:///kudu/kudu-backups/* hdfs://cluster-2.cluster_name.root.hwx.site/kudu/kudu-backups/

o 使用复制管理器。有关更多信息,请参阅HDFS 复制

2.       运行以下命令在目标集群上恢复备份:

spark-submit --class org.apache.kudu.backup.KuduRestore <path to kudu-backup2_2.11-1.12.0.jar> \
--kuduMasterAddresses <addresses of Kudu masters> \
--rootPath <path to the stored backed up data> \
<table_name>

在哪里

o --kuduMasterAddresses用于将 Kudu 大师的地址指定为逗号分隔的列表。例如,master1-host,master-2-host,master-3-host 哪些是 Kudu 大师的实际主机名。

o --rootPath 用于指定存储备份数据的路径。它接受任何与 Spark 兼容的路径。

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

§  AWS S3 示例: s3a://kudu-backup/

如果您已备份到 S3 并看到线程“main”中的异常java.lang.IllegalArgumentException:路径必须是绝对的错误,请确保 S3 路径以正斜杠/)结尾。

o <table_name> 可以是要备份的表或表列表。

o 可选:--tableSuffix,如果设置,添加到恢复的表名就足够了。它只能在 createTables属性为 时使用 true

o 可选:--timestampMs是以毫秒为单位的 UNIX 时间戳,它定义了选择还原候选者时要使用的最晚时间。其默认值为 System.currentTimeMillis()

sudo -u hdfs spark-submit --class org.apache.kudu.backup.KuduRestore /opt/cloudera/parcels/CDH-7.2.0-1.cdh7.2.0.p0.3758356/lib/kudu/kudu-backup2_2.11.jar \
--kuduMasterAddresses cluster-1.cluster_name.root.hwx.site \
--rootPath hdfs:///kudu/kudu-backups \


my_table

3.        Cloudera Manager 中重启 Kudu 服务。

原文链接:https://docs.cloudera.com/cdp-private-cloud-upgrade/latest/data-migration/topics/cdp-data-migration-kudu.html

 

上一篇:利用WebEasyMail创建企业内部邮件服务器


下一篇:邮件系统,企业的沟通桥梁,不可以宕机