通常我们都会有将hbase表数据迁到另一个hbase表中业务需要,这种不要着急,我选择一种最适合的方式,因为每种方式处理的数据量、对集群的压力都是有差异的

总的划分可以分为命令行和API两种方式,本人记录以下几种命令方式,有错误之处请指正,本篇也仅是自己一些行为记录

hbase数据 导出 导入;

----------------------使用命令-------------------------1

从一个HBase上把数据export到HDFS生产文件a,再把这个文件a上传到要导入的集群上,使用import导入到数据库中,注意数据库中的表名是否存在

hbase org.apache.hadoop.hbase.mapreduce.Driver export t_gps_std_20190225 hdfs:///tmp/zyr/t_gps_std_20190225

hbase org.apache.hadoop.hbase.mapreduce.Driver import t_gps_std_20190225 hdfs:///tmp/hbasedatabak/part-m-00000

--------------带参数的方式--------------------------2

-D hbase.mapreduce.scan.row.start=

-D hbase.mapreduce.scan.row.stop=

Export [-D ]* [ [ []] [^[regex pattern] or [Prefix] to filter]]

hbase org.apache.hadoop.hbase.mapreduce.Driver export -D hbase.mapreduce.scan.row.start=0 -D hbase.mapreduce.scan.row.stop=1000?* t_gps_sq_20190424 hdfs:///tmp/zyr/t_gps_sq_20190424_

hbase org.apache.hadoop.hbase.mapreduce.Driver export -D hbase.mapreduce.scan.row.start=\xAD\x5C\xAC\xF6w -D hbase.mapreduce.scan.row.stop=\xAD\x5C\xAD1\xFF?* t_gps_sq_20190424 hdfs:///tmp/zyr/t_gps_sq_20190424___

HBase表快照

--------------HBase表快照功能--------------------------3

HBase快照允许管理员不拷贝数据,而直接克隆一张表,这对域服务器产生的影响最小。将快照导出至其他集群不会直接影响到任何服务器

1.开启快照功能,在hbase-site.xml文件中添加如下配置项:

hbase.snapshot.enabled

true

2.命令操作

在hbase shell中使用 clone_snapshot,delete_snapshot, list_snapshots, restore_snapshot, snapshot命令。

snapshot: 为某表创建快照 ,例如 snapshot ‘harve_role’,'20180108-harve_role'

list_snapshots:查看快照列表

list_snapshots 'map.*' : 查找以map开头的snapshot

delete_snapshot:删除快照,例如 delete_snapshot '20180108-harve_role'

clone_snapshot:基于快照,clone一个新表。例如 clone_snapshot '20180108-harve_role', ‘harve_role2’

restore_snapshot:基于快照恢复表  例如:disable ‘harve_role’    restore_snapshot '20180108-harve_role'

工具ExportSnapshot:

hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot t_fault_20200327 -copy-to hdfs://mine:8020/hbase/ -mappers 16

执行该命令后,在mine:9000的hdfs中会把t_fault_20200327文件夹copy到/hbase/.hbase-snapshot文件下,进入mine这个hbase集群,执行list_snapshots会看到有一个快照:t_fault_20200327,通过命令clone_snapshot可以把该快照copy成一个新的表,不用提前创建表,新表的region个数等信息完全与快照保持一致。

在使用snapshot把一个集群的数据copy到新集群后,应用程序开启双写,然后可以使用Export工具把快照与双写之间的数据导入到新集群,从而实现数据迁移,为保障数据不丢失,Export导出时指定的时间范围可以适当放宽。

具体操作如下:

(1)创建snapshot

snapshot 'tableName', ‘snapshotName'

(2)迁移snapshot

hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot \

-snapshot snapshot_src_table \

-mappers 20 \

-bandwidth 1024

这种方式用于将快照表迁移到另外一个集群的时候使用,使用MR进行数据的拷贝,速度很快,使用的时候记得设置好bandwidth参数,以免由于网络打满导致的线上业务故障。

(3)恢复snapshot

restore_snapshot ‘snapshotName’

备注:这种方式需要对表进行过disable才能进行restore_snapshot的操作,如果这个还在写入数据,则需要采用bulkload的方式导入。

(4)将snapshot使用bulkload的方式导入

hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles \

-Dhbase.mapreduce.bulkload.max.hfiles.perRegion.perFamily=1024 \

备注1:这种方式需要将所有的文件进行遍历并全部通过bulkload导入,上面的只是一个文件的导入,这种方式不需要disable表。

备注2:上面的操作1、3、4都是在hbase shell中执行。

Hbase数据迁移之bulkload

与HBase原生Client API和Mapreduce任务(快照、导入命令都基于MR)相比,“Bulk Loading”方法直接生成HFile算是一种比较高效便捷的方法。

BulkLoad将数据批量导入HBase中。支持通过命令行和API两种操作方式,下面注意记录本人使用命令方式

1、数据准备

准备StoreFile存储格式的文件,通过下面任意一个方式都可得到,

1)自己Mapreduce得到

2)如果测试可以copy一个hbase表的文件

操作步骤:

需要导入hbase表的数据保存到hdfs文件系统中,文件 --> hdfs

在hbase中建表,create 'tablename','familyname'

2、导入数据到hbase表里

ImportTsv命令,该命令是把tsv文件转成hfile文件再导入表中,通常在使用该命令时注意列族,文件大小划分等参数设置,

直接导入表中:

hadoop jar/opt/cloudera/parcels/CDH/jars/hbase-server-1.0.0-cdh5.4.0.jar importtsv

\-Dimporttsv.separator=","\-Dhbase.hregion.max.filesize=20971520\-Dimporttsv.columns=HBASE_ROW_KEY,familyname:cellname tablename

\/test/test.cvs

或者

导入到hfile文件中

export HBASE_HOME=/opt/hbase

export HADOOP_CLASSPATH=`${HBASE_HOME}/bin/hbase classpath`

${HADOOP_HOME}/bin/hadoop jar ${HBASE_HOME}/lib/hbase-server-1.0.0-cdh5.4.0.jar importtsv

\-Dimporttsv.separator=","\-Dimporttsv.columns=HBASE_ROW_KEY,info:name,info:age tablename

\-Dimporttsv.bulk.output=/test/bulkload/outputdir

\/test/bulkload/simple1.cvs

CompleteBulkLoad命令,该命令将importtsv或HFileOutputFormat的结果文件导入到某张表中

示例:

hadoop jar hbase-VERSION.jar completebulkload [-c /path/to/hbase/config/hbase-site.xml] /myfile mytable

实例:

hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles-Dhbase.mapreduce.bulkload.max.hfiles.perRegion.perFamily=64 /file tablename

或者

sudo-u hbase hadoop jar $HBASE_HOME/hbase-server-1.2.0-cdh5.15.1.jar completebulkload -Dhbase.mapreduce.bulkload.max.hfiles.perRegion.perFamily=1024 /file tablename

使用中出现错误记录

(1)找不到jar包时处理:导入环境

export HBASE_HOME=/opt/hbase

export HADOOP_CLASSPATH=`${HBASE_HOME}/bin/hbase classpath`

或者CDH版本使用

export HADOOP_CLASSPATH=/opt/cloudera/parcels/CDH/lib/hbase/lib/*

(2)目录结构

保存目录格式符合 **/列族名/hfile 规则,仅仅适合一次对单列族组织成HFile文件

(3)文件权限

sudo hdfs hdfs dfs chown hbase:hbase /test/hfile/f0

hdfs dfs chmod711 /test/hfile/f0

(4)文件个数太多

错误:Trying to load more than 32 hfiles to one family of one region

执行命令时带参数一次性导入多个文件,默认是32个-Dhbase.mapreduce.bulkload.max.hfiles.perRegion.perFamily=1024

3、查看导入的数据

scan 't1', {COLUMNS => ['f0'], LIMIT => 10}

4、小结

importtsv工具的使用场景较为广泛,适应于用户有时希望自己编程生成数据,或以其它格式导入数据,importtsv须要在导入前确定每条数据column维度。须要对工具改造时查看ImportTsv.java和HFileOutputFormat的javaDoc文档。

completebulkload工具同样可以编程化实现,需要查看LoadIncrementalHFiles类

hbase集群之间数据迁移_hbase数据迁移到另一集群上相关推荐

  1. hbase集群 数据写入_HBase神器 | BDSHBase集群之间数据迁移同步的利器

    BDS定位 BDS针对开源HBase目前存在的同步迁移痛点,自主研发的一套数据迁移的平台,用于HBase集群的无缝迁移.主备容灾.异地多活.在线离线业务分离.HBase数据归档.对接RDS实时增量数据 ...

  2. hbase集群之间数据迁移_HBase不同集群间数据迁移

    前提 两个集群相同vpc和安全组 操作步骤 一.查看源端集群HDFS NameNode IP和port 1. 查看NameNode IP,获取对应的name转换成IP hdfs getconf -na ...

  3. hbase集群 数据写入_Hbase实用技巧:全量+增量数据的迁移方法

    摘要:本文介绍了一种Hbase迁移的方法,可以在一些特定场景下运用. 背景 在Hbase使用过程中,使用的Hbase集群经常会因为某些原因需要数据迁移.大多数情况下,可以跟用户协商用离线的方式进行迁移 ...

  4. HBase不同版本集群之间数据迁移

    本文摘自:https://www.dazhuanlan.com/2019/10/20/5dac43ffeb75a/ 由于HBase CDH4和CDH5数据格式不兼容,所以不能用"CopyTa ...

  5. 【大数据之Hadoop】三十一、HDFS集群迁移之Apache和Apache集群间数据拷贝

    数据迁移场景:   冷热集群数据分类存储:集群数据整体迁移:数据的准实时同步,目的在于数据的双备份可用. 数据迁移需要考虑的因素:   带宽.性能.增量同步(原始数据文件进行了追加写.被删除或重命名) ...

  6. DistCp迁移Hive数据过程中源集群增加删除文件等场景测试

    1 概述   由于在数据迁移过程中,上层任务仍在运行,会出现源集群新增文件及删除文件的情况,因此进行测试 2 需要同步的数据文件说明   源集群:192.168.40.100:8020,目标集群:19 ...

  7. 云HBase小组成功抢救某公司自建HBase集群,挽救30+T数据

    摘要: 使用过开源HBase的人都知道,运维HBase是多么复杂的事情,集群大的时候,读写压力大,配置稍微不合理一点,就可能会出现集群状态不一致的情况,糟糕一点的直接导致入库.查询某个业务表不可用, ...

  8. 集群之间数据拷贝distcp性能的调优

    百PB级数据拷贝distcp性能调优 背景 配合集群迁移,需要迁移3PB数据 拷贝方式 全量数据约3PB,全量拷贝一次,耗时近两个星期(业务每日高峰期需要停止拷贝作业) 这里主要测试每天的增量同步速度 ...

  9. 转载:云HBase小组成功抢救某公司自建HBase集群,挽救30+T数据

    概述 使用过开源HBase的人都知道,运维HBase是多么复杂的事情,集群大的时候,读写压力大,配置稍微不合理一点,就可能会出现集群状态不一致的情况,糟糕一点的直接导致入库.查询某个业务表不可用, 甚 ...

最新文章

  1. oschina添加ssh公钥一记
  2. 〔转〕Word域的应用和详解5_索引和目录
  3. Winform开发之ComboBox和ComboBoxEdit控件绑定key/value数据
  4. 26 行 ABAP 代码使用 HTTP_GET 函数下载百度网站的首页数据
  5. 少儿编程100讲轻松学python(十二)-python如何将数据写入txt
  6. 11-windows下卸载Orcale
  7. python中continue用法案例_记录今天学习python中for与while循环针对break和continue的用法...
  8. defaultlib library conflicts with use of other libs; use /NODEFAULTLIB:library
  9. java读取摄像头视屏流,Java 摄像头视频获取
  10. GEE植被覆盖度计算
  11. 2021年安全员-B证-项目负责人(广东省)考试题及安全员-B证-项目负责人(广东省)考试总结
  12. 【周总结】博客第一周小结SSL暑假训练第二周小结
  13. C# 实现登录并跳转界面
  14. python2.7实现简单日记本,兼容windows和linux
  15. Docker从入门到放弃------docker的安装与初始化配置
  16. NOIP2018赛后总结
  17. halcon 图像合成与通道
  18. android 摇晃工具箱
  19. bitbake hello world demo 实验
  20. 好用的综合bim插件:Revit属性对话框中“视图范围”命令的使用

热门文章

  1. scss百分号操作符的一个使用例子
  2. 加入公网github上的SAP organization
  3. 微软Azure storage account的connection string
  4. SAP Cloud for Customer里Lead和LeanLead两个相似的BO
  5. 在Google Cloud platform上创建Kubernetes cluster并使用
  6. CDS view里case - when - else关键字的用法
  7. 一个ABAP重构的实例:CL_CRM_LEAD_CREATE~SELECT_CAMPAIGNS_BY_SQL
  8. 删除context node后遗留的问题
  9. HANA report creation implementation go through
  10. html native code is rendered from xml configuration