开发者社区> _陆豪> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

使用CopyTable同步HBase数据

简介: CopyTable是Hbase提供的一个数据同步工具,可以用于同步表的部分或全部数据。本文介绍如何使用CopyTable同步HBase数据。针对没有hadoop集群的用户,还介绍了单机运行CopyTable的配置和参数。
+关注继续查看

CopyTable是Hbase提供的一个数据同步工具,可以用于同步表的部分或全部数据。本文介绍如何使用CopyTable同步HBase数据。针对没有hadoop集群的用户,还介绍了单机运行CopyTable的配置和参数。
根据我们的测试,在表不压缩的情况下,单机版CopyTable可以达到1小时100G左右的导入速度。10T以下的数据都可以使用CopyTable导入数据。

准备工作

1 安装HBase
CopyTable依赖于hadoop mapreduce。如果源HBase集群中开启了mapreduce则可以直接在源集群上运行。否则可以在另一个hadoop集群上安装HBase客户端并将hbase-site.xml文件中的zk地址指向源集群。
也可以单机运行,单机运行时,不需要安装hadoop,只要安装了HBase就可以使用hadoop的本地模式运行CopyTable。
安装和配置HBase的过程可以参考云HBase相关文档

2 创建目标表
使用CopyTable同步数据前,需要确保目标表存在。如果不存在需要先创建目标表。强烈建议根据数据的分布情况对目标表进行预分裂,这样能够提高写入速度。

3 其他准备工作
需要将运行CopyTable的机器ip加入HBase的ip白名单,确保可以访问到HBase。
需要修改hbase-site.xml文件中的zk地址指向源集群。

准备工作完成后,就可以运行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常用选项说明如下:
startrow 开始行。
stoprow 停止行。
starttime 时间戳(版本号)的最小值。
endtime 时间戳的最大值。如果不指定starttime,endtime不起作用。
peer.adr 目标集群的地址。格式为:hbase.zookeeer.quorum:hbase.zookeeper.client.port:zookeeper.znode.parent
families 要同步的列族。多个列族用逗号分隔。
all.cells 删除标记也进行同步。
更多参数参见官方文档

除copytable的参数外, 以下选项也建议在命令中进行设置:
(1)对于单机运行的情况,需要指定mapreduce.local.map.tasks.maximum参数,表示并行执行的最大map个数。不指定的话默认是1,所有任务都是串行执行的。
(2)hbase.client.scanner.caching建议设置为大于100的数。这个数越大,使用的内存越多,但是会减少scan与服务端的交互次数,对提升读性能有帮助。
(3)mapred.map.tasks.speculative.execution建议设置为false,避免因预测执行机制导致数据写两次。

另外,如果是在E-mapreduce集群上执行CopyTable,需要注意E-mapreduce默认的hbase-site.xml文件中配置了phoenix,所以需要导入phoenix的jar包,否则运行时会报错:
-libjars $HBASE_HOME/lib/phoenix-$PhoenixVersion-HBase-$HBaseVersion-server.jar

性能数据

我们使用两个云HBase集群来进行导入数据的测试。两个集群配置一致:3台region-server,机器配置为4CPU 8GB,数据盘为SSD云盘。
源数据使用hbase pe产生,共16亿条数据,表采用SNAPPY压缩,数据文件大小为71.9GB,共有32个region。数据为单行单列,rowkey长度26字节,列长度100字节。
使用一台4CPU 8GB的ECS执行CopyTable,测试结果如下表:

测试轮次 测试条件 导入时间 导入速度(rec/s) 导入速度(MB/s)
1 -Dhbase.client.scanner.caching=100 -Dmapreduce.local.map.tasks.maximum=16 1h21min 329218 15.15
2 在测试1的基础上修改-Dhbase.client.scanner.caching=500 1h14min 360360 16.58
3 在测试2的基础上按照源表数据分布对目标表进行预分裂再进行导入 1h5min 410256 18.88

测试过程中的相关监控如下:

测试1

_2017_08_28_6_31_42

测试2

_2017_08_28_6_31_58

测试3

_2017_08_28_6_32_09

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
因为主机时间不同步导致的hbase zookeeper 节点宕机奔溃 一例
前几天 ,升级hadoop/hbase 集群, 新 添加了几十台机器, 硬件部门,安装好主机os 后就交付给我们了, 安装好软件环境,配置好,就启动接入集群了,运行了一个礼拜,系统运行正常。 昨天的时候淘汰一台旧机器,上面跑了zookeeper , 需要准备一个新的zookeeper 节点来代替,如实就找了一台hbase 节点上启动了zookeeper 这个时候问题来了, zookeeper 启动后总是在报错, 一直在确定自己的状态。
0 0
BDS - HBase数据迁移同步方案的设计与实践
目前在阿里云上,BDS是如何进行HBase集群之间的数据迁移和数据的实时同步的
1995 0
使用Sqoop从Mysql向云HBase同步数据
Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具。本文介绍如何使用sqoop将数据从Mysql导入到HBase。从成本的角度考虑,针对没有hadoop集群的用户,重点介绍单机运行sqoop的配置和参数。
4093 0
Hbase 学习(一) hbase配置文件同步
最近在狂啃hadoop的书籍,这部《hbase:权威指南》就进入我的视野里面了,啃吧,因为是英文的书籍,有些个人理解不对的地方,欢迎各位拍砖。
1770 0
Hadoop原理与技术——Hbase实操
Hadoop原理与技术——Hbase实操
0 0
Hadoop原理与技术——Hbase的基本操作
Hadoop原理与技术——Hbase的基本操作
0 0
SLF4J: Hbase和Flume的slf4j-log4j12-x.x.xx.jar与hadoop的slf4j-log4j12-x.x.xx.jar冲突
SLF4J: Hbase和Flume的slf4j-log4j12-x.x.xx.jar与hadoop的slf4j-log4j12-x.x.xx.jar冲突
0 0
Hadoop安装Hbase启动失败报错解决方法
Hadoop安装Hbase启动失败报错解决方法
0 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
玩转HBase和Lindorm 大数据入门和实战
立即下载
《玩转HBase和Lindorm大数据入门和实战》
立即下载
云数据库HBase企业级安全解析
立即下载