HBase数据迁移(阿里云到腾讯云实战)

编程入门 行业动态 更新时间:2024-10-08 08:22:42

HBase数据迁移(阿里云到<a href=https://www.elefans.com/category/jswz/34/1770070.html style=腾讯云实战)"/>

HBase数据迁移(阿里云到腾讯云实战)

背景:需要把阿里云的客户数据迁移到腾讯云环境;腾讯云环境已经部分新客户的数据。

为了保证迁移到腾讯云的历史客户,依然能访问到他们的历史数据;需要注意迁移后不能覆盖腾讯云环境的表数据(即增量迁移),同时要求不能停表停服务。

方案选型:

1.distcp 需要停表停服务;

2.Import/Export 比较稳妥,先下载文件,后传到腾讯云环境;

3.snapshot 速度快,需要目标集群没有该表;

4.从归档的历史数据通过代码写入,工作量大;

5.replication 方式,只能实现主集群变更,实时同步给目标集群;

实施:

1.将阿里云环境的user表最近两年的版本号为1的数据下载为压缩文件;

nohup hbase org.apache.hadoop.hbase.mapreduce.Export \
-D mapreduce.output.fileoutputformatpress=true \
-D mapreduce.output.fileoutputformatpress.codec=org.apache.hadoop.iopress.GzipCodec \
-D mapreduce.output.fileoutputformatpress.type=BLOCK \
-Ddfs.client.socket-timeout=240000000 \
-Dipc.client.connect.timeout=40000000 \
-Dmapreduce.task.timeout=1800000 \
-D hbase.client.scanner.caching=20000 \
-D hbase.export.scanner.batch=2000 \
-D hbase.export.scanner.caching=20000 \
-D mapreduce.map.memory.mb=1024 \
-D mapreduce.reduce.memory.mb=1024 \
-D yarn.app.mapreduce.am.resource.mb=1024 \
user /data/hbaseExportBak/user/user_2022-07-07/ 1 1622476800000 1657209600000 &> /var/lib/hadoop-hdfs/2022-07-07.log &

 2.将下载的文件distcp导入到腾讯云的hdfs集群;

3.将数据直接导入到腾讯云的灰度环境,此时报 memorystore 被写满的错误f,同时hbase发生告警,原因是写的数据太多,直接刷满了memorystore;因此,不建议,直接这样写入hbase;

hbase org.apache.hadoop.hbase.mapreduce.Import \
-Ddfs.client.socket-timeout=240000000 \
-Dipc.client.connect.timeout=40000000 \
-Dmapreduce.task.timeout=1800000 \
-D mapreduce.map.memory.mb=5120 \
-D mapreduce.reduce.memory.mb=5120 \
-Dmapreduce.task.timeout=1800000 \
-D yarn.app.mapreduce.am.resource.mb=5120 \
user /data/hbaseExportBak/user/user_2021-07-07/

4.增加参数 -Dimport.bulk.output ,采用bulkload方式导入,先将export出来的数据,转为HFile文件,然后批量写入hbase;

 hbase org.apache.hadoop.hbase.mapreduce.Import \
-D hadoop.tmp.dir=/data/hbase-tmp/ \
-Ddfs.client.socket-timeout=240000000 \
-Dipc.client.connect.timeout=40000000 \
-Dmapreduce.task.timeout=1800000 \
-D mapreduce.map.memory.mb=5120 \
-D mapreduce.reduce.memory.mb=5120 \
-Dmapreduce.task.timeout=1800000 \
-D yarn.app.mapreduce.am.resource.mb=5120 \
-Dimport.bulk.output=/data/hbaseExportBak/user/userHFile/user_2022/ \
user /data/hbaseExportBak/user/2022-07-07/

操作往往不是那么顺利的,在进行上述操作时出现本地磁盘写满的问题,因为hbase hadoop.tmp.dir 参数是运维搭建时是默认的;这样会起一个mr拉取hdfs的数据,默认先下载到本地磁盘目录,然后在本地转换完成再传到import.bulk.output 对应的目录,然后再清空本地写入的数据;因此,你需要选择一个允许大量数据的文件目录;或者手动添加参数修改 hadoop.tmp.dir 目录为hdfs的目录,这样就不会占用本地的磁盘;

5.将转换为HFile文件的目录(/data/hbaseExportBak/user/userHFile/user_2022/)bulkload导入到hbase ;

hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles \
-Dhbase.mapreduce.bulkload.max.hfiles.perRegion.perFamily=102400 \
/data/hbaseExportBak/user/userHFile/user_2021/ user

 

更多推荐

HBase数据迁移(阿里云到腾讯云实战)

本文发布于:2024-03-06 21:28:06,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1716424.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:腾讯   阿里   实战   数据   HBase

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!