大厂Data+Agent 秘籍:腾讯/阿里/字节解析如何提升数据分析智能。 了解详情
写点什么

从 HDFS 迁移到基于 Amazon S3 的 Apache HBase 的技巧

  • 2019-12-16
  • 本文字数:3085 字

    阅读完需:约 10 分钟

从 HDFS 迁移到基于 Amazon S3 的 Apache HBase 的技巧


Amazon EMR 5.2.0 开始,您可以选择基于


Amazon S3 上的 Apache HBase。在


S3 上运行 HBase 可为您额外带来多项优势,包括降低成本、数据持久性和更轻松地进行扩展。HBase 提供了多个可用于迁移和备份 HBase 表的选项。迁移到 S3 上的 HBase 的步骤与适用于 Apache Hadoop 分布式文件系统 (HDFS) 上的 HBase 的步骤类似。但是,如果您知道一些细微差别和一些“技巧”,则迁移会更容易。在本文中,我将介绍如何使用一些常用的 HBase 迁移选项开始使用 S3 上的 HBase。

HBase 迁移选项

选择正确的迁移方法和工具是确保 HBase 表成功迁移的重要步骤。但是,选择正确的迁移方法绝非易事。


以下 HBase 可帮助您迁移到 S3 上的 HBase:


  • 快照

  • 导出和导入

  • CopyTable


下图汇总了每个选项的步骤。



您使用的 HBase 迁移方法取决于各种因素。例如,EMR 提供的 HBase 版本 1.2.3 是您可在 S3 上运行的最早版本。因此,您要从中迁移的 HBase 版本可能是帮助您做出决定的重要因素。有关 HBase 版本和兼容性的更多信息,请参阅 _Apache HBase 参考指南_中的 HBase 版本号和兼容性


如果要从较早版本(例如 HBase 0.94)的 HBase 迁移,则应测试应用程序以确保其与较新的 HBase API 版本兼容。您肯定不想花费数小时迁移大型表,而只想了解您的应用程序和 API 是否与不同 HBase 版本兼容。


好消息是,HBase 提供的实用工具只需要迁移表的一部分。这可让您测试现有的 HBase 应用程序,而无需完全迁移整个 HBase 表。例如,可以使用“导出”、“导入”或“CopyTable”实用工具将表的一小部分迁移到 S3 上的 HBase。确认应用程序适用较新的 HBase 版本后,可以继续使用 HBase 快照迁移整个表。

选项 1:使用快照迁移到 S3 上的 HBase

您可以使用 HBase 快照轻松创建表备份。HBase 还提供 ExportSnapshot 实用工具,可让您将快照导出到其他位置,如 S3。在本部分,我将讨论如何将快照与 ExportSnapshot 结合使用,将表迁移到 S3 上的 HBase。


有关使用 HBase 快照执行表备份的详细信息,请参阅 _Amazon EMR 发行指南_中的使用 HBase 快照以及 _Apache HBase 参考指南_中的 HBase 快照。这些资源提供了可用于快照和 ExportSnapshot 的其他设置和配置。


以下示例说明了如何使用快照将 HBase 表迁移到 S3 上的 HBase。


注意:HBase 0.94 等较早的 HBase 版本的快照结构与您要迁移到的 HBase 1.x 的快照结构不同。如果您使用快照从 HBase 0.94 迁移,当您尝试恢复表时,会收到 TableInfoMissingException 错误。有关使用快照从 HBase 0.94 迁移的详细信息,请参阅从 HBase 0.94 迁移部分。


  1. 从源 HBase 集群中,创建表的快照:


   $ echo "snapshot '<table_name>', '<snapshot_name>'" | hbase shell
复制代码


  1. 将快照导出到 S3 存储桶:


   $ hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot <snapshot_name> -copy-to s3://<HBase_on_S3_root_dir>/
复制代码


对于 **ExportSnapshot** 实用工具中的 _-copy-to_ 参数,请指定您用于 EMR 集群 HBase root 目录的 S3 位置。如果您的集群已启动且正在运行,您可以通过在 EMR 控制台中查看集群的**配置** 或使用 AWS CLI 来查找其 S3 **hbase.rootdir** 值。以下是用于查找该值的命令:
复制代码


   $ aws emr describe-cluster --cluster-id <cluster_id> | grep hbase.rootdir
复制代码


  1. 启动一个将 S3 存储选项与 HBase 配合使用的 EMR 集群(如果您已启动并运行某个 EMR 集群,请跳过此步骤)。有关详细步骤,请参阅 _Amazon EMR 发行指南_中的通过控制台使用 HBase 创建集群。启动集群时,请确保 HBase root 目录设置为与导出的快照位于同一 S3 位置(即在上一步的 -copy-to 参数中使用的位置)。

  2. 从该快照恢复或克隆 HBase 表。

  3. 要恢复表并确保表名称与源表相同,请使用 restore_snapshot


       $ echo "restore_snapshot '<SNAPSHOT_NAME>'"| hbase shell
复制代码


* 要以其他表名称恢复表,请使用 **clone_snapshot**: 
复制代码


       $ echo "clone_snapshot '<snapshot_name>', '<table_name>'" | hbase shell
复制代码

使用快照从 HBase 0.94 迁移

如果使用快照方法从 HBase 版本 0.94 迁移,则在尝试从快照恢复时会收到错误。这是因为 HBase 0.94 中的快照结构与 HBase 1.x 中的快照结构不同。


以下步骤说明了如何修复 HBase 0.94 快照,以便将其恢复到 S3 上的 HBase 表。


  1. 完成上一示例中的步骤 1 至 3 以创建和导出快照。

  2. 在目标集群中,按照以下步骤修复快照:

  3. 使用 s3-dist-cp 将快照数据(存档)目录复制到新目录中。存档目录包含您的快照数据。目录可能会很大,具体取决于表的大小。使用 s3-dist-cp 可以加快此步骤的速度:


       $ s3-dist-cp --src s3://<HBase_on_S3_root_dir>/.archive/<table_name> --dest s3://<HBase_on_S3_root_dir>/archive/data/default/<table_name>
复制代码


* 创建并修复快照描述符文件: 
复制代码


       $ hdfs dfs -mkdir s3://<HBase_on_S3_root_dir>/.hbase-snapshot/<snapshot_name>/.tabledesc
$ hdfs dfs -mv s3://<HBase_on_S3_root_dir>/.hbase-snapshot/<snapshot_name>/.tableinfo.<*> s3://<HBase_on_S3_root_dir>/.hbase-snapshot/<snapshot_name>/.tabledesc
复制代码


  1. 恢复快照:


   $ echo "restore_snapshot '<snapshot_name>'" | hbase shell
复制代码

选项 2:使用“导出”和“导入”迁移到 S3 上的 HBase

正如我在前面部分探讨的,HBase 快照和 ExportSnapshot 是迁移表的理想之选。但有时您只想迁移表的其中一部分,因此您需要其他工具。在本部分,我将介绍如何使用 HBase“导出”和“导入”实用工具。


使用“导出”和“导入”将表迁移到 S3 上的 HBase 的步骤与 HBase 文档中提供的步骤没有太大差异。在这些文档中,您还可以找到详细信息,包括如何使用它们迁移表的一部分。


以下步骤说明了如何使用导出”和“导入”将表迁移到 S3 上的 HBase。


  1. 从源集群导出 HBase 表:


   $ hbase org.apache.hadoop.hbase.mapreduce.Export <table_name> s3://<table_s3_backup>/<location>/
复制代码


  1. 在目标集群中,创建要向其中导入数据的目标表。确保目标表中的列系列与导出的表/源表的列系列相同。

  2. 在目标集群中,使用“导入”实用工具导入表:


   $ hbase org.apache.hadoop.hbase.mapreduce.Import '<table_name>' s3://<table_s3_backup>/<location>/
复制代码


通常情况下,建议使用 HBase 快照迁移 HBase 表。但是,“导出”和“导入”实用工具对于测试使用案例非常有用,在这些情况下,只需迁移一小部分表并测试应用程序。如果您从没有 HBase 快照功能的 HBase 集群迁移,这也很方便。

选项 3:使用 CopyTable 迁移到 S3 上的 HBase

与“导出”和“导入”实用工具类似,CopyTable 是一个 HBase 实用工具,可用于复制 HBase 表的其中一部分。但请注意,如果您在无法兼容的 HBase 版本之间复制或迁移表(例如,从 HBase 0.94 复制到 HBase 1.x),CopyTable 无法使用。


有关更多信息和示例,请参阅 HBase 文档中的 CopyTable

小结

在本文中,我演示了如何使用常用 HBase 备份实用工具轻松将表迁移到 S3 上的 HBase。通过使用 HBase 快照,可以将整个表迁移到 S3 上的 HBase。要通过仅迁移或复制表的其中一部分来测试 S3 上的 HBase,可以使用 HBase“导出”、“导入”或“CopyTable”实用工具。


如果您有任何问题或建议,请在下方留言。




作者介绍:


Bruno Faria 是 AWS 的 EMR 解决方案架构师。 他与我们的客户合作,为他们在 Amazon EMR 上运行复杂应用程序提供架构方面的指导。在业余时间,他喜欢与家人共度时光和学习新的大数据解决方案。


本文转载自 AWS 技术博客。


原文链接:https://amazonaws-china.com/cn/blogs/china/tips-for-migrating-to-apache-hbase-on-amazon-s3-from-hdfs/


2019-12-16 15:491411

评论

发布
暂无评论
发现更多内容

RocketMQ 开源爱好者请注意邀您共探行业应用与生产实践

阿里巴巴云原生

【等保】二级等保是什么意思?哪些企业要做?多少钱?

行云管家

网络安全 等保 二级等保

教你识别一些sequence的相关问题

华为云开发者联盟

序列 GaussDB(DWS) sequence GTM bind关系

实时渲染大赛结果将于3月31日晚8点B站直播公布,敬请期待!

3DCAT实时渲染

实时渲染 3D动画

重视软件开发的黑匣子

菜根老谭

bug 系统安全 程序日志

大咖说|网易数帆论道 PolarDB 数据库开源 & 存储生态

大咖说

数据库 阿里云 开源 网易

java培训JVM面试题分享

@零度

JVM JAVA开发

DDoS攻击与防范策略

喀拉峻

网络安全 信息安全 DDoS

TDengine 在蔚来能源系统的落地实践

TDengine

数据库 tdengine

艾特网能全面参与数据中心蒸发冷却空调系列标准编制

科技热闻

95 后新生代 Committer 贺张俭:谈谈年轻人的开源观

Apache Pulsar

开源 云原生 物联网 Apache Pulsar Apache Pulsar 社区

王者荣耀商城异地多活架构设计

王大胖

AliSSR 语音超分算法:让在线会议语音更明亮更自然

阿里云CloudImagine

阿里云 音视频 智能降噪 音频3A 音频算法

大数据培训Hive 提高查询效率的方法

@零度

hive 大数据开发

ModStartCMS模块化建站系统 v3.6.0 内容标签增强,电脑手机适配

ModStart开源

企业和团队如何创建高效实用的知识管理体系

小炮

知识管理 企业

阿里代码依赖漏洞检测服务,高效杜绝代码安全隐患

阿里云云效

云计算 阿里云 云原生 代码安全 依赖漏洞检测

Apache ShardingSphere 首篇论文被 ICDE 收录,全球数据库发展迎来新局面

SphereEx

数据库 ShardingSphere SphereEx apache 社区

博文推荐|使用 Apache Pulsar 和 Scala 进行事件流处理

Apache Pulsar

开源 分布式 云原生 Apache Pulsar Apache Pulsar 社区

直播回顾|TGIP-CN 036:Apache Pulsar 最新技术进展与动态

Apache Pulsar

开源 云原生 中间件 Apache Pulsar Apache Pulsar 社区

车联网平台百万级消息吞吐架构设计|车联网系列专题 05

EMQ映云科技

车联网 物联网 IoT emq 3月月更

钉钉协同引擎与应用场景技术探索

阿里巴巴终端技术

分布式 跨平台 客户端 开发框架

《LeetCode刷题报告》题解内容Ⅰ

謓泽

3月月更

适合 Kubernetes 初学者的一些实战练习(二)

汪子熙

Kubernetes 云原生 Kubernetes 集群 Serverless Kubernetes 3月月更

最佳代码扫描工具,实现自动化代码扫描服务

阿里云云效

云计算 阿里云 开发 代码扫描 代码安全

面试突击34:如何使用线程池执行定时任务?

王磊

java面试

go 1.18 bufio 包中的 Writer.AvailableBuffer

蓬蒿

go 1.18 Writer.AvailableBuffer

洞见科技参编的中国信通院《联邦学习场景应用研究报告》正式发布

洞见科技

联邦学习 隐私计算 中国信通院 洞见科技

web前端培训使用 Vue3来实现文章目录功能

@零度

Vue 前端开发

哈尔滨市消防救援支队:用宜搭打造消防智慧大脑,守护冰城平安

一只大光圈

低代码 数字化 消防 钉钉宜搭

多终端运行小程序,快速丰富智慧社区使用场景

Speedoooo

智慧社区 小程序管理平台 智慧家居 智能家居生态平台 生态平台

从 HDFS 迁移到基于 Amazon S3 的 Apache HBase 的技巧_文化 & 方法_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章