HBase数据导入工具总结

本文对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 Sqoop 使用Sqoop从Mysql向云HBase同步数据
其他类型数据源一次性导入HBase DataX DataX官方文档
导入Phoenix表 Datax HBase11xsqlwriter插件文档
其他类型数据源周期性导入HBase 数据集成 step-by-step通过数据集成同步数据到HBase 数据集成概述
时间: 2024-11-03 12:38:50

HBase数据导入工具总结的相关文章

C++开发的Redis数据导入工具优化_C 语言

背景 使用C++开发了一个Redis数据导入工具 从oracle中将所有表数据导入到redis中: 不是单纯的数据导入,每条oracle中的原有记录,需要经过业务逻辑处理, 并添加索引(redis集合): 工具完成后,性能是个瓶颈: 优化效果 使用了2个样本数据测试: 样本数据a表8763 条记录: b表940279 条记录: 优化前,a表耗时11.417s: 优化后,a表耗时1.883s: 用到的工具 gprof, pstrace,time 使用time工具查看每次执行的耗时,分别包含用户时间

基于JXL的Excel数据导入工具

写这东西主要是前段时间项目中有类似的需求,觉得导入Excel也是一个比较常用的功能,所以进行了简单的封装: 功能介绍: 1.一个简单的利用jxl导入Excel的工具: 2.数据集的获取方式支持JDBC.内部利用Record构建两种: 3.仅支持字符类型.数值类型.日期类型数据的导入: 附件中的jar可以引入直接使用,jar中已包含源码,zip中包括各种导入方法的演示:zip中包含了jdbc所需的jar和jxl.jar. 您也可以点击http://sites.google.com/site/gwi

线程-如何将存储量很大的txt文档数据导入到hbase当中

问题描述 如何将存储量很大的txt文档数据导入到hbase当中 我现在要写一个程序,将第三方导出的txt文件内容读取并放到hbase当中. 由于txt文档非常大(超过10G),我初步思路是通过单线程读取到一个线程安全的容器当中,然后再利用多线程向hbase中写入. 请问有没有什么更好的思路,谢谢! 解决方案 方案一: 1.在Linux环境利用split命令把文件分块: 2.多线程对多文件读取写入HBase 方案二: 1.要看文件的格式是怎么样的,你想存HBase的格式怎样的 2.把文件按照格式分

数据导入HBase最常用的三种方式及实践分析

要使用Hadoop,数据合并至关重要,HBase应用甚广.一般而言,需要 针对不同情景模式将现有的各种类型的数据库或数据文件中的数据转入至HBase 中.常见方式为:使用HBase的API中的Put方法: 使用HBase 的bulk load 工具:使用定制的MapReduce Job方式.<HBase Administration Cookbook>一书对这三种方式有着详尽描述,由 ImportNew 的陈晨进行了编译,很有收获,推荐给大家. HBase数据迁移(1)-使用HBase的API

Hbase 学习(十一)使用hive往hbase当中导入数据

我们可以有很多方式可以把数据导入到hbase当中,比如说用map-reduce,使用TableOutputFormat这个类,但是这种方式不是最优的方式. Bulk的方式直接生成HFiles,写入到文件系统当中,这种方式的效率很高. 一般的步骤有两步: (1)使用ImportTsv或者import工具或者自己写程序用hive/pig生成HFiles (2)用completebulkload把HFiles加载到hdfs上 ImportTsv能把用Tab分隔的数据很方便的导入到hbase当中,但还有

MySQL数据导入导出方法与工具介绍(1- myslqimport utility)

mysql|数据             MySQL数据导入导出方法与工具介绍(1- myslqimport utility)              mysqlimport文本文件导入工具介绍 翻译声明:    本文内容来自Sam's Teach Yourself MySQL in 21 Days一书的部分内容,by Mark Maslakowski      英文原文版权属原作者所有,中文的部分翻译有略有增删;原书讲的过于清楚的地方有删,讲的不清楚的地方有增:如果有翻译的不妥或者不正确的地

MySQL数据导入导出方法与工具介绍(2-import from sql files)

mysql|数据    MySQL数据导入导出方法与工具介绍(2-import from sql files)          批处理导入文件,从sql文件导入数据到数据库中 翻译声明:    本文内容来自Sam's Teach Yourself MySQL in 21 Days一书的部分内容,by Mark Maslakowski    英文原文版权属原作者所有,中文的部分翻译有略有增删;原书讲的过于清楚的地方有删,讲的不清楚的地方有增:如果有翻译的不妥或者不正确的地方,请指正. 翻译者:D

MySQL数据导入导出方法与工具介绍(3-Exporting Data)

mysql|数据                MySQL数据导入导出方法与工具介绍(3-Exporting Data)                  导出数据的方法:Methods of Exporting Data 翻译声明:    本文内容来自Sam's Teach Yourself MySQL in 21 Days一书的部分内容,by Mark Maslakowski    英文原文版权属原作者所有,中文的部分翻译有略有增删;原书讲的过于清楚的地方有删,讲的不清楚的地方有增:如果有翻

MySQL数据导入导出工具mysqlimport简介

mysql|数据        1).mysqlimport的语法介绍: mysqlimport位于mysql/bin目录中,是mysql的一个载入(或者说导入)数据的一个非常有效的工具.这是一个命令行工具.有两个参数以及大量的选项可供选择.这个工具把一个文本文件(text file)导入到你指定的数据库和表中.比方说我们要从文件Customers.txt中把数据导入到数据库Meet_A_Geek中的表Custermers中: mysqlimport Meet_A_Geek Customers.