View a markdown version of this page

从以前的 HBase 版本迁移 - Amazon EMR

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

从以前的 HBase 版本迁移

要迁移先前 HBase 版本的数据,请参阅《Apache HBase 参考指南》中的升级以及HBase 版本号和兼容性。您可能需要特别注意从 1.0 之前版本升级的HBase要求。

迁移到 Amazon EMR 7.4.0 或更高版本

注意

如果您要从 7.4.0 之前的 EMR 版本迁移到 7.3.0 以上的版本,请遵循以下准则。

如果您当前运行的 EMR 版本已启用 Amazon 的存储文件跟踪功能(包含在 6.2.0 到 7.3.0 版本中),并且您想要升级到具有 OSS 存储文件跟踪的版本(该功能在 7.3.0 之后的 EMR 版本上可用),请按照以下步骤进行操作:

  1. 在现有集群中:

    1. 禁用 hbase:storefile 表。

    2. 删除 hbase:storefile表。

    3. 刷新 hbase:meta

    4. 等待元数据更新。

  2. 在新集群中:

    1. 将同一个 Amazon S3 目录设置为根目录。

    2. 使用 DefaultStoreFileTracker 实现启动集群:

      { "Classification": "hbase-site", "Properties": { hbase.store.file-tracker.impl: "org.apache.hadoop.hbase.regionserver.storefiletracker.DefaultStoreFileTracker" } }
    3. 在表或列系列级别,使用以下命令更改存储文件跟踪器:

      1. 更改表或表列系列的存储文件跟踪器:

        hbase> change_sft 't1','FILE' hbase> change_sft 't2','cf1','FILE'
      2. 更改表中所有与给定正则表达式 (regex) 匹配的存储文件跟踪器:

        hbase> change_sft_all 't.*','FILE' hbase> change_sft_all 'ns:.*','FILE' hbase> change_sft_all 'ns:t.*','FILE'

使用只读副本集群 HBase 在 Amazon S3 集群上迁移到 Amazon EMR 版本 7.12.0 或更高版本

从 EMR 7.12.0 开始,您可以将 HBase Amazon S3 集群上的只读副本从只读模式切换到活动模式,同时启用读取和写入操作。此功能是通过两个新的 HBase shell 命令提供的。

  1. readonly_state

    检索集群的当前读写操作状态。

    输出:

    • 非活动-群集处于只读模式,写入处于非活动状态。

    • ACTIVE-集群支持读取和写入操作。

  2. readonly_switch

    使用切换过程的可配置选项启用或禁用只读模式。

    语法:

    readonly_switch <readonly>,<force_flush>,<force_refresh_meta>,<force_refresh_hfile>

    参数:

    • readonly(必填)-用于启用 (true) 或禁用 (false) 只读模式的布尔值

    • force_flush(可选)-在从活动模式切换到只读模式之前强制刷新数据(默认值:true)

    • force_refresh_meta(可选)-从只读模式切换到活动模式时强制刷新元表(默认值:true)

    • force_refresh_hfile(可选)-从只读模式切换到活动模式时强制 HFile 刷新(默认值:true)

迁移步骤

如果您当前正在 A HBase mazon S3 集群上运行 EMR 6.0.0+,并且想要迁移到 EMR 7.12.0 或更高版本的集群,请按照以下步骤操作:

  1. 使用 hbck 报告或主用户界面中的卡住程序,确保您的源集群处于稳定状态,没有不一致之处。 HBase

    sudo -u hbase hbase hbck > hbck_report.txt
  2. 确保源集群上没有处于 SPLIT 状态的区域:

    1. 如果存在处于 SPLIT 状态的区域,请在相应的表上运行主要压缩,然后等待它们完成

      major_compact <table_name>
    2. 压实完成后在 HBase 外壳中运行 catalogjanitor_run

  3. 创建一个新的 EMR 7.12.0+ 集群,该集群配置为只读副本,指向与源集群相同的 Amazon S3 位置。有关如何设置只读副本集群的更多详细信息,请参阅此博客。如果您想升级到 OSS Store 文件跟踪,请使用上述步骤中提到的 DefaultStoreFileTracker 配置启动新集群。

  4. 等待主节点完全初始化。通过读取表格来验证数据的可访问性,并确认新集群处于只读模式

    hbase:001:0> readonly_state Took 0.4612 seconds => "INACTIVE"
  5. 在源集群上禁用平衡和压缩:

    echo "balance_switch false" | hbase shell echo "compaction_switch false" | hbase shell
  6. 确保只读副本集群用户界面中没有 overlaps/inconsistencies 显示任何内容,并验证区域是否显示打开状态并已正确分配。

  7. 如果要更改为,请使用上一节中提到的只读副本集群上的命令转换存储文件跟踪。 FileBasedTracker

  8. 停止指向源集群的作业,刷新所有表,然后关闭源集群。等待完全终止后再继续。

    echo "flush 'usertable'" | hbase shell echo "flush 'hbase:meta'" | hbase shell echo "flush 'hbase:namespace'" | hbase shell
  9. 将只读副本集群切换到活动模式以启用写入操作。完成此步骤后,您的新集群将同时支持读取和写入操作,迁移即告完成。

    hbase:010:0> readonly_switch false Took 38.1568 seconds
  10. 验证新集群上的写入操作并确保所有区域都在处理请求。

注意

在任何时间点,只能有一个活动集群指向 Amazon S3 位置。因此,只有在源集群终止后,才应将只读副本切换为活动副本。