本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
从以前的 HBase 版本迁移
要迁移先前 HBase 版本的数据,请参阅《Apache 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 版本上可用),请按照以下步骤进行操作:
在现有集群中:
禁用
hbase:storefile表。删除
hbase:storefile表。刷新
hbase:meta。等待元数据更新。
在新集群中:
将同一个 Amazon S3 目录设置为根目录。
使用
DefaultStoreFileTracker实现启动集群:{ "Classification": "hbase-site", "Properties": { hbase.store.file-tracker.impl: "org.apache.hadoop.hbase.regionserver.storefiletracker.DefaultStoreFileTracker" } }在表或列系列级别,使用以下命令更改存储文件跟踪器:
更改表或表列系列的存储文件跟踪器:
hbase> change_sft 't1','FILE' hbase> change_sft 't2','cf1','FILE'更改表中所有与给定正则表达式 (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 命令提供的。
readonly_state检索集群的当前读写操作状态。
输出:
非活动-群集处于只读模式,写入处于非活动状态。
ACTIVE-集群支持读取和写入操作。
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 或更高版本的集群,请按照以下步骤操作:
使用 hbck 报告或主用户界面中的卡住程序,确保您的源集群处于稳定状态,没有不一致之处。 HBase
sudo -u hbase hbase hbck > hbck_report.txt确保源集群上没有处于 SPLIT 状态的区域:
如果存在处于 SPLIT 状态的区域,请在相应的表上运行主要压缩,然后等待它们完成
major_compact <table_name>压实完成后在 HBase 外壳中运行
catalogjanitor_run
创建一个新的 EMR 7.12.0+ 集群,该集群配置为只读副本,指向与源集群相同的 Amazon S3 位置。有关如何设置只读副本集群的更多详细信息,请参阅此博客
。如果您想升级到 OSS Store 文件跟踪,请使用上述步骤中提到的 DefaultStoreFileTracker 配置启动新集群。 等待主节点完全初始化。通过读取表格来验证数据的可访问性,并确认新集群处于只读模式
hbase:001:0> readonly_state Took 0.4612 seconds => "INACTIVE"在源集群上禁用平衡和压缩:
echo "balance_switch false" | hbase shell echo "compaction_switch false" | hbase shell确保只读副本集群用户界面中没有 overlaps/inconsistencies 显示任何内容,并验证区域是否显示打开状态并已正确分配。
如果要更改为,请使用上一节中提到的只读副本集群上的命令转换存储文件跟踪。 FileBasedTracker
停止指向源集群的作业,刷新所有表,然后关闭源集群。等待完全终止后再继续。
echo "flush 'usertable'" | hbase shell echo "flush 'hbase:meta'" | hbase shell echo "flush 'hbase:namespace'" | hbase shell将只读副本集群切换到活动模式以启用写入操作。完成此步骤后,您的新集群将同时支持读取和写入操作,迁移即告完成。
hbase:010:0> readonly_switch false Took 38.1568 seconds验证新集群上的写入操作并确保所有区域都在处理请求。
注意
在任何时间点,只能有一个活动集群指向 Amazon S3 位置。因此,只有在源集群终止后,才应将只读副本切换为活动副本。