将 HBase 迁移到 CDP

2021-10-09 14:53:57 浏览数 (1)

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

您可以将 Apache HBase 工作负载从 CDH 和 HDP 迁移到 CDP。要成功迁移 Apache HBase 工作负载,您必须首先了解两个平台之间的数据管理差异,并准备好源数据以与目标 CDP 平台兼容。

迁移您的工作负载意味着将您的数据迁移到 CDP 并使您的应用程序访问 CDP 中的数据。

  • 将数据迁移到CDP 私有云基础部署时,您必须使用 Apache HBase 复制和快照功能以及 HashTable/SyncTable 工具。
  • 将数据迁移到 CDP 公共云部署时,您必须使用安装脚本来配置源集群和目标集群之间的复制,以及 Apache HBase 快照功能和 HashTable/SyncTable 工具。安装脚本可帮助您在将数据迁移到公共云时克服复杂的安全挑战,并帮助您使用命令行工具设置复制。

使用 Apache HBase 复制和快照功能可确保您不会面临任何数据迁移瓶颈,即使您的源集群中有大量数据。HashTable/SyncTable 工具确保迁移到目标集群的数据与您的源集群同步,并让您验证迁移是否成功。

准备数据迁移

在开始从 CDH 5.x 或 HDP 2.x 到 CDP 的数据迁移之前,您必须了解有关 CDH/HDP 和 CDP 的要求并完成某些任务以确保成功迁移。

  • 如果您是从 CDH 迁移,请在 CDP 中配置 Ranger ACL,对应于现有 CDH 集群中的 HBase ACL。
  • 如果要从 HDP 迁移,请执行以下步骤:
    1. 在 CDP 中配置与现有 HDP 集群中的 HBase 或 Ranger ACL 相对应的 Ranger ACL。

有关更多信息,请参阅配置基于资源的服务:HBase。

  1. 迁移您的应用程序以使用新的 HBase-Spark 连接器,因为 CDP 不再支持您在 CDH 或 HDP 中使用的 Spark-HBase 连接器。

有关更多信息,请参阅使用 HBase-Spark 连接器。

  • 从 HDP 2.x 或 CDH 5.x 升级到 CDP 时查看已弃用的 API 和不兼容性。

有关更多信息,请参阅Apache HBase 中的弃用通知。

  • 确保在升级前所有数据都已迁移到支持的编码类型。

有关更多信息,请参阅删除 PREFIX_TREE 数据块编码。

  • 确保手动升级任何外部协处理器,因为它们不会在升级过程中自动升级。

在升级之前,请确保您的协处理器类与 CDP 兼容。有关更多信息,请参阅检查协处理器类。

将数据从 CDH 或 HDP 迁移到CDP 私有云基础版

在迁移数据之前,您必须在 CDP 数据中心上创建一个 Apache HBase 集群。您的 CDH 或 HDP 集群是您的源集群,您的CDP 私有云基础 集群是您的目标集群。

  1. 在源集群和目标集群上部署 HBase 复制。

有关说明,请参阅部署 HBase 复制。

  1. 通过在 HBase Shell 中运行以下命令,在源集群和目标集群上启用复制。

在源集群上

代码语言:javascript复制
create 't1',{NAME=>'f1', REPLICATION_SCOPE=>1}

在目标集群上

代码语言:javascript复制
create 't1',{NAME=>'f1', KEEP_DELETED_CELLS=>'true'}

笔记

Cloudera 建议在源集群KEEP_DELETED_CELLS中的目标集群中启用列族 REPLICATION_SCOPE=1。

  1. add_peer在源集群的 HBase Shell 中运行该命令,将目标集群添加为对等体。
代码语言:javascript复制
add_peer 'ID', 'DESTINATION_CLUSTER_KEY'

您可以DESTINATION_CLUSTER_KEY从可以使用 Cloudera Manager 访问的 HBase Master 用户界面中获取该值。

  1. disable_peer ("<peerID>")在源集群的HBase Shell中运行命令关闭源集群中的peer

disable_peer("ID1")

这会停止与对等方的复制,但会保留日志以供将来参考。

  1. 在 Cloudera Manager 中拍摄快照。
    1. 选择HBase 服务。
    2. 单击表浏览器 选项卡。
    3. 单击一个表。
    4. 单击拍摄快照。
    5. 指定快照的名称,然后单击Take Snapshot。
  2. ExportSnapshot在源集群的 HBase Shell 中运行该命令,将快照从源集群导出到目标集群。您必须以hbase用户或拥有文件的用户身份运行 ExportSnapshot 命令。

该ExportSnapshot工具执行类似于distcp将文件复制到另一个集群的 MapReduce 作业 。ExportSnapshot在文件系统级别工作,因此 HBase 集群可以离线。

代码语言:javascript复制
hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot <snapshot name> -copy-to hdfs://destination:hdfs_port/hbase -mappers 16

这里,目的地(hdfs://destination:hdfs_port/hbase)是目的地CDP 私有云基础 集群。将 HDFS 服务器路径和端口替换为您用于集群的路径和端口。

重要

必须在源集群和目标集群上启用快照。导出快照时,表的 HFile、日志和快照元数据会从源集群复制到目标集群。

  1. 在源集群上的 HBase Shell 中运行 以启用源集群和目标集群中的对等体。

在源集群上的 HBase Shell 中运行此命令以启用源集群和目标集群中的对等体

enable_peer("ID1")

  1. 在源集群上运行HashTable命令,在目的集群上运行SyncTable命令来同步源集群和目的集群之间的表数据。

在源集群上

代码语言:javascript复制
HashTable [options] <tablename> <outputpath>

在目标集群上

代码语言:javascript复制
SyncTable [options] <sourcehashdir> <sourcetable> <targettable>

有关使用 HashTable 和 SyncTable 的更多信息和示例,请参阅 使用 HashTable 和 SyncTable 工具。

验证和验证您的数据是否已迁移

您可以使用带有 --dryrun 参数的 SyncTable 命令来验证表在源集群和目标集群之间是否同步。SyncTable --dryrun 选项使 SyncTable 命令的这次运行成为只读。

将此命令用于从远程源集群到目标数据中心集群上的目标tableB的tableA 的试运行 SyncTable 。

在目标数据中心集群的 HBase Shell 中运行此命令

代码语言:javascript复制
hbase org.apache.hadoop.hbase.mapreduce.SyncTable --dryrun=true --sourcezkcluster=zk1.example.com,zk2.example.com,zk3.example.com:2181:/hbase hdfs://nn:8020/hashes/testTable testTableA testTableB

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

0 人点赞