hbase ExportSnapshot 和 CopyTable迁移数据

栏目: 数据库 · 发布时间: 7年前

内容简介:最近分别用ExportSnapshot和CopyTable方式迁移数据到新集群,两种方式各有自己的使用场景。大部分情况下snapshot方式是优先选择的,因为snapshot方式迁移速度比较快,消耗的资源少。export snapshot方式可以认为物理备份迁移,而copy table方式逻辑迁移。

最近分别用ExportSnapshot和CopyTable方式迁移数据到新集群,两种方式各有自己的使用场景。

大部分情况下snapshot方式是优先选择的,因为snapshot方式迁移速度比较快,消耗的资源少。

export snapshot方式可以认为物理备份迁移,而copy table方式逻辑迁移。

1、ExportSnapshot

expprt snapshot方式可以比较很方便地使用第三方YARN资源来迁移数据。

可以限速和指定并发mappers数量。

bin/hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot  
-copy-from hdfs://hdfs-xxx:8020/apps/hbase/data
-copy-to hdfs://hdfs-yyy:8020/apps/hbase/data 
-bandwidth 80 -mappers 300 -overwrite -snapshot ${snapshot}

需要注意的是,在配置yarn资源是,单个container的max memory尽可能设置大点,避免在reduce节点出现任务失败的情况。

当时,执行完任务后,提示CorruptedSnapshotException异常(o((⊙﹏⊙))o),增大container的max memory,重新执行后,恢复正常。

2019-05-29 02:04:41,058 ERROR [VerifySnapshot-pool1-t7] snapshot.SnapshotReferenceUtil:
Can t find hfile: 8c95a4b4629b4fdba7cc726f7b8ab640 in the real 
(hdfs://hdfs-yyy:8020/apps/hbase/data/data/test/xyz/005a081e8e974dbc7d2b9d7f18048d11/c/8c95a4b4629b4fdba7cc726f7b8ab640)
or archive(hdfs://hdfs-yyy:8020/apps/hbase/data/archive/data/test/xyz/005a081e8e974dbc7d2b9d7f18048d11/c/8c95a4b4629b4fdba7cc726f7b8ab640) 
directory for the primary table.
2019-05-29 02:04:41,059 ERROR [main] snapshot.ExportSnapshot: Snapshot export failed
org.apache.hadoop.hbase.snapshot.CorruptedSnapshotException: Can t find hfile: 8c95a4b4629b4fdba7cc726f7b8ab640 
in the real (hdfs://hdfs-yyy:8020/apps/hbase/data/data/test/xyz/005a081e8e974dbc7d2b9d7f18048d11/c/8c95a4b4629b4fdba7cc726f7b8ab640) 
or archive (hdfs://hdfs-yyyy:8020/apps/hbase/data/archive/data/test/xyz/005a081e8e974dbc7d2b9d7f18048d11/c/8c95a4b4629b4fdba7cc726f7b8ab640) directory for the primary table.
        at org.apache.hadoop.hbase.snapshot.SnapshotReferenceUtil.concurrentVisitReferencedFiles(SnapshotReferenceUtil.java:238)
        at org.apache.hadoop.hbase.snapshot.SnapshotReferenceUtil.verifySnapshot(SnapshotReferenceUtil.java:197)
        at org.apache.hadoop.hbase.snapshot.SnapshotReferenceUtil.verifySnapshot(SnapshotReferenceUtil.java:181)
        at org.apache.hadoop.hbase.snapshot.ExportSnapshot.verifySnapshot(ExportSnapshot.java:793)
        at org.apache.hadoop.hbase.snapshot.ExportSnapshot.run(ExportSnapshot.java:953)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:76)
        at org.apache.hadoop.hbase.snapshot.ExportSnapshot.innerMain(ExportSnapshot.java:1012

2、CopyTable

使用场景:迁移数据到异构的表结构,比如rename column family,删除不用的column等、迁移部分时间区域的数据(见案例)。

缺陷:1)一般需要在源集群上部署YARN资源,如果用第三方YARN资源,需要指定源HBase集群的hdfs和hbase配置文件。

2)消耗的内存比较多,需要合理设置hbase.client.scanner.caching参数。

bin/hbase org.apache.hadoop.hbase.mapreduce.CopyTable 
--starttime=1265875194289 --endtime=1265878794289 
--peer.adr=server1,server2,server3:2181:/hbase 
--families=myOldCf:myNewCf,cf2,cf3 TestTable 
-Dhbase.client.scanner.caching=1000 
-Dmapreduce.local.map.tasks.maximum=1500
-Dmapred.map.tasks.speculative.execution=false

3) 速度慢,需要先从hdfs读取出数据,然后按batch写到目标集群。

snapshot方式在线迁移性能数据,大约迁移20T数据(snappy压缩后),使用了80台32核256GB内存机器,迁移时间约4个小时。

copy table迁移优化,hbase.client.scanner.caching 和 mapreduce.local.map.tasks.maximum 调整(默认1).


以上所述就是小编给大家介绍的《hbase ExportSnapshot 和 CopyTable迁移数据》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Building Social Web Applications

Building Social Web Applications

Gavin Bell / O'Reilly Media / 2009-10-1 / USD 34.99

Building a social web application that attracts and retains regular visitors, and gets them to interact, isn't easy to do. This book walks you through the tough questions you'll face if you're to crea......一起来看看 《Building Social Web Applications》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

html转js在线工具
html转js在线工具

html转js在线工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试