这是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 迁移,请执行以下步骤:
- 在 CDP 中配置与现有 HDP 集群中的 HBase 或 Ranger ACL 相对应的 Ranger ACL。
有关更多信息,请参阅配置基于资源的服务:HBase。
- 迁移您的应用程序以使用新的 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 私有云基础 集群是您的目标集群。
- 在源集群和目标集群上部署 HBase 复制。
有关说明,请参阅部署 HBase 复制。
- 通过在 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。
- add_peer在源集群的 HBase Shell 中运行该命令,将目标集群添加为对等体。
add_peer 'ID', 'DESTINATION_CLUSTER_KEY'
您可以DESTINATION_CLUSTER_KEY从可以使用 Cloudera Manager 访问的 HBase Master 用户界面中获取该值。
- disable_peer ("<peerID>")在源集群的HBase Shell中运行命令关闭源集群中的peer
disable_peer("ID1")
这会停止与对等方的复制,但会保留日志以供将来参考。
- 在 Cloudera Manager 中拍摄快照。
- 选择HBase 服务。
- 单击表浏览器 选项卡。
- 单击一个表。
- 单击拍摄快照。
- 指定快照的名称,然后单击Take Snapshot。
- 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、日志和快照元数据会从源集群复制到目标集群。
- 在源集群上的 HBase Shell 中运行 以启用源集群和目标集群中的对等体。
在源集群上的 HBase Shell 中运行此命令以启用源集群和目标集群中的对等体
enable_peer("ID1")
- 在源集群上运行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