HBase数据导入工具总结

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 本文对HBase常用的数据导入工具进行介绍,并结合云HBase常见的导入场景,给出建议的迁移工具和参考资料。 HBase之间数据导入常用工具 HBase提供了几种数据迁移工具,其中基于API调用的有CopyTable,Export&Import。

本文对HBase常用的数据导入工具进行介绍,并结合云HBase常见的导入场景,给出建议的迁移工具和参考资料。

HBase之间数据导入常用工具

HBase提供了几种数据迁移工具,其中基于API调用的有CopyTable,Export&Import。基于写HDFS的有distcp,snapshot。

这里要说明的是,本文作为一般性的介绍,不能忽略常用的工具distcp和snapshot,但是由于云HBase默认不开启HDFS端口,所以在云HBase上面基于HDFS的方法都是用不了的。我们推荐用户使用CopyTable进行迁移,根据我们的测试,CopyTable的性能足以支撑10T以下数据的迁移。如果您的数据量比较大(超过10T),可以联系云HBase工作人员单独为您处理。

CopyTable

CopyTable是Hbase提供的一个数据同步工具,可以用于同步表的部分或全部数据。CopyTable通过运行一个map-reduce任务从源表读出数据再写入到目标表。
CopyTable使用很简单,只需要运行一个命令就可以。命令示例:

./bin/hbase org.apache.hadoop.hbase.mapreduce.CopyTable -Dhbase.client.scanner.caching=200 -Dmapreduce.local.map.tasks.maximum=16 -Dmapred.map.tasks.speculative.execution=false --peer.adr=$ZK_IP1,$ZK_IP2,$ZK_IP3:/hbase $TABLE_NAME

CopyTable的使用和性能数据可参考:使用CopyTable同步HBase数据

Export&Import

Export将HBase表内容dump到一个顺序文件(sequence)中。Import将Export得到的顺序文件内容写入HBase表。和CopyTable一样,Export和Import也是通过运行map-reduce任务来执行的。
Export和Import命令格式:

bin/hbase org.apache.hadoop.hbase.mapreduce.Export <tablename> <outputdir> [<versions> [<starttime> [<endtime>]]]
bin/hbase org.apache.hadoop.hbase.mapreduce.Import <tablename> <inputdir>

distcp

distcp是Hadoop提供的用于复制HDFS文件的工具,经常也被用来同步HBase数据。
使用distcp进行数据同步的步骤如下:
(1)源集群停止写入。
(2)将数据文件复制到目标集群上。运行

 hadoop distcp $SrcFilePath $DstFilePath

(3)然后在目标集群上执行
hbase hbck -fixAssignments -fixMeta

snapshot

HBase snapshot可以在对region-server影响很小的情况下创建快照、将快照复制到另一个集群。
使用snapshot迁移数据的操作步骤如下:
(1)在源表上创建snapshot。
hbase snapshot create -n $SnapshotName -t $TableName
(2)将snapshot拷贝到目标集群的HDFS上。

hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot $SnapshotName -copy-from $SrcSnapshotPath -copy-to $DstSnapshotPath

(3)在目标集群恢复snapshot。在hbase shell中执行restore_snapshot '$SnapshotName'

异构数据导入HBase常用工具

其他类型数据向HBase导入常见的工具有:
(1)关系数据库可以使用Sqoop导入。
(2)其他类型数据可以使用DataX。
(3)如果是周期性数据导入需求,可以使用数据集成。

Sqoop

Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具。Sqoop的数据同步也是通过map-reduce实现的。
使用Sqoop同步数据只需要运行一个命令就可以。命令示例:

sqoop import -Dmapreduce.local.map.tasks.maximum=8 --connect jdbc:mysql://$mysqlURL:3306/$database --table $table --hbase-table $hbaseTable --column-family $columnFamily --hbase-row-key $mysqlColumn --username $mysqlUser -m 8 -P

Sqoop的使用可参考:使用Sqoop从Mysql向云HBase同步数据

DataX

DataX 是广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、OTS、ODPS 等各种异构数据源之间高效的数据同步功能。
DataX本身作为数据同步框架,将不同数据源的同步抽象为从源头数据源读取数据的Reader插件,以及向目标端写入数据的Writer插件,理论上DataX框架可以支持任意数据源类型的数据同步工作。同时DataX插件体系作为一套生态系统, 每接入一套新数据源该新加入的数据源即可实现和现有的数据源互通。
使用DataX进行数据同步的步骤如下:
(1)编写作业的配置文件。配置文件为json格式,具体格式可参考这里
(2)运行DataX。执行命令python datax.py $config.json
DataX的使用可参考官方文档

数据集成

数据集成是阿里集团对外提供的的数据同步平台,其底层也基于DataX。由于数据集成提供了调度的功能,所以很适合用于周期性导入数据或是与其他任务有依赖关系的情况。
使用数据集成同步数据的步骤较复杂,具体请参考这里

云HBase数据迁移指南

场景 建议迁移工具 参考资料
HBase->HBase,数据量<10T CopyTable 使用CopyTable同步HBase数据
HBase->HBase,数据量>10T 联系云HBase工作人员处理
HBase经典网络集群迁移到vpc网络 使用ClassicLink打通网络。迁移工具参考具体场景 HBase经典网络集群迁移到vpc网络
关系型数据库->HBase Sqoop 使用Sqoop从Mysql向云HBase同步数据
其他类型数据源一次性导入HBase DataX DataX官方文档
导入Phoenix表 Datax HBase11xsqlwriter插件文档
其他类型数据源周期性导入HBase 数据集成 step-by-step通过数据集成同步数据到HBase
相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
&nbsp; 相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情:&nbsp;https://cn.aliyun.com/product/hbase &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
28天前
|
缓存 监控 Shell
如何使用 HBase Shell 进行数据的实时监控和备份?
如何使用 HBase Shell 进行数据的实时监控和备份?
|
28天前
|
Shell 分布式数据库 Hbase
如何使用 HBase Shell 进行数据的批量导入和导出?
如何使用 HBase Shell 进行数据的批量导入和导出?
|
5月前
|
存储 分布式数据库 数据库
Hbase学习二:Hbase数据特点和架构特点
Hbase学习二:Hbase数据特点和架构特点
86 0
|
5月前
|
缓存 监控 Shell
使用 HBase Shell 进行数据的实时监控和备份
使用 HBase Shell 进行数据的实时监控和备份
|
5月前
|
Shell 分布式数据库 Hbase
使用 HBase Shell 进行数据的批量导入和导出
使用 HBase Shell 进行数据的批量导入和导出
637 6
|
4月前
|
存储 分布式计算 分布式数据库
《HBase MapReduce之旅:我的学习笔记与心得》——跟随我的步伐,一同探索HBase世界,揭开MapReduce的神秘面纱,分享那些挑战与收获,让你在数据的海洋里畅游无阻!
【8月更文挑战第17天】HBase是Apache顶级项目,作为Bigtable的开源版,它是一个非关系型、分布式数据库,具备高可扩展性和性能。结合HDFS存储和MapReduce计算框架,以及Zookeeper协同服务,HBase支持海量数据高效管理。MapReduce通过将任务拆解并在集群上并行执行,极大提升处理速度。学习HBase MapReduce涉及理解其数据模型、编程模型及应用实践,虽然充满挑战,但收获颇丰,对职业发展大有裨益。
48 0
|
5月前
|
存储 Java 分布式数据库
HBase构建图片视频数据的统一存储检索
HBase构建图片视频数据的统一存储检索
|
7月前
|
消息中间件 关系型数据库 MySQL
实时计算 Flink版操作报错合集之使用 Event Time Temporal Join 关联多个 HBase 后,Kafka 数据的某个字段变为 null 是什么原因导致的
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
139 0
|
7月前
|
SQL 消息中间件 Kafka
实时计算 Flink版操作报错合集之使用 Event Time Temporal Join 关联多个 HBase 后,Kafka 数据的某个字段变为 null 是什么原因导致的
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
98 0
|
3月前
|
分布式计算 Java Hadoop
java使用hbase、hadoop报错举例
java使用hbase、hadoop报错举例
111 4