`
无尘道长
  • 浏览: 159984 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

hbase数据备份或者容灾方案

阅读更多

    HBase的数据备份或者容灾方案有这几种:Distcp,CopyTable,Export/Import,Snapshot,Replication,以下分别介绍(以下描述的内容均是基于0.94.20版本)。

 

一、Distcp

   在使用distcp命令copy hdfs文件的方式实现备份时,需要禁用备份表确保copy时该表没有数据写入,对于在线服务的hbase集群,该方式不可用,而且在一些文章中可以看到通过distcp文件恢复hbase表时需使用:

bin/hbase org.jruby.Main bin/add_table.rb /hbase/testtable命令把从hdfs目录中恢复表的元数据,然后重启hbase,但是0.94之后的版本的bin目录下均没有找到add_table.rb文件,似乎hbase已经废弃该功能。

 

二、CopyTable

  执行命令前,需先创建表

 

  支持时间区间、row区间,改变表名称,改变列簇名称,指定是否copy删除数据等功能,例如:

 

 hbase org.apache.hadoop.hbase.mapreduce.CopyTable --starttime=1265875194289 --endtime=1265878794289 --peer.adr= dstClusterZK:2181:/hbase --families=myOldCf:myNewCf,cf2,cf3 TestTable

 

    1、同一个集群不同表名称

 

      hbase org.apache.hadoop.hbase.mapreduce.CopyTable --new.name=tableCopy  srcTable

 

    2、跨集群copy

 

      hbase org.apache.hadoop.hbase.mapreduce.CopyTable --peer.adr=dstClusterZK:2181:/hbase srcTable

 

   该方式,原表、目标表的名称相同

   全部使用方式如下:

   

   MRmap数量与表的region数相同,与HFile文件个数无关。

 

   CopyTable工具采用scan查询,写入新表时采用putdelete API,全是基于hbaseclient api进行读写,无法使用Import工具的bulk导入。

 

 三、Export/Import

  通过Export导出数据到目标集群的hdfs,再在目标集群执行import导入数据,Export支持指定开始时间和结束时间,因此可以做增量备份,Export工具参数如下:  


    
可见,在导出时可以指定versionstarttimeendtime等参数,并且可以通过-D指定是否压缩,指定caching等属性,比如:

 

hbase org.apache.hadoop.hbase.mapreduce.Export test4 hdfs://t2-namenode:9000/test4_90 1 1415693812520 1415694912520

 

Export导出工具与CopyTable一样是依赖hbasescan读取数据,并且采用的InportFormatCopyTable一样是TableInputFormat类,从该类的getSplits()方法可以看出MRmap数与hbase表的region数相同。

 

Import工具参数如下:   


   
import时可以指定使用bulk的方式,bulk是生成hfile格式的文件,直接导入到Region,无需经历hbase的写数据过程,从而无需消耗memstore,无需Flush等,更加高效,如果不指定bulk文件路径(hdfs的路径)则会采用hbase putdelete API进行写入。

 

To import 0.94 exported files in a 0.96 cluster or onwards, you need to set system property "hbase.import.version" when running the import command as below:

 

$ bin/hbase -Dhbase.import.version=0.94 org.apache.hadoop.hbase.mapreduce.Import <tablename> <inputdir>

使用Import工具前必须先创建表,关于hbase.import.version属性是0.96的功能

 

  四、Snapshot

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

       <property>

 

        <name>hbase.snapshot.enabled</name>

 

        <value>true</value>

 

    </property>

 

hbase shell中使用clone_snapshot, delete_snapshot, list_snapshots, restore_snapshot, snapshot命令可是是想创建快照,查看快照,通过快照恢复表,通过快照创建一个新的表等功能,需要注意的是:如果该表开启了replication功能实现主从同步则在使用restore_snapshot功能对主表进行恢复时,必须先停止replication功能并且redo the bootstrap,因为replication是基于WAL日志实现的,而snapshot是直接在hdfs层面不是基于hbaseputdeleteAPI进行的,不会写WAL日志。

在创建snapshot后,可以通过ExportSnapshot工具把快照导出到另外一个集群,实现数据备份或者数据迁移,ExportSnapshot工具的用法如下:

 
例如:

 

hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot test4_snapshot_201411111422 -copy-to hdfs://t2-namenode:9000/hbase -mappers 2

 

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

 

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

 

五、Replication

可以通过replication机制实现hbase集群的主从模式,具体步骤如下:

    1、  zookeeper不能被hbase托管,如果主从hbase集群共用一个zk集群,则zookeeper.znode.parent不能都是默认的hbase,可以配置为hbase-masterhbase-slave

    2、 在主hbase集群的hbase-site.xml中添加配置项:

<property>

    <name>hbase.replication</name>

    <value>true</value>

     </property>

<property>

    <name>replication.source.nb.capacity</name>

    <value>25000</value>

<description>主集群每次向从集群发送的entry最大的个数,默认值25000,可根据集群规模做出适当调整</description>

     </property>

<property>

<name>replication.source.size.capacity</name>

<value>67108864</value>

<description>主集群每次向从集群发送的entry的包的最大值大小,默认为64M</description>

</property>

<property>

<name>replication.source.ratio</name>

<value>1</value>

<description>主集群使用的从集群的RS的数据百分比,默认为0.1,需调整为1,充分利用从集群的RS</description>

</property>

<property>

<name>replication.sleep.before.failover</name>

<value>2000</value>

<description>主集群在RS宕机多长时间后进行failover,默认为2秒,具体的sleep时间是: sleepBeforeFailover + (long) (new Random().nextFloat() * sleepBeforeFailover) </description>

</property>

<property>

<name>replication.executor.workers</name>

<value>1</value>

<description>从事replication的线程数,默认为1,如果写入量大,可以适当调大</description>

</property>

 

   3、在从hbase集群的hbase-site.xml中添加:

<property>

    <name>hbase.replication</name>

    <value>true</value>

     </property>

 

   4、 进入主集群的shell,执行:

add_peer 'ID' 'CLUSTER_KEY'

The ID must be a short integer. To compose the CLUSTER_KEY, use the following template:

hbase.zookeeper.quorum:hbase.zookeeper.property.clientPort:zookeeper.znode.parent

This will show you the help to setup the replication stream between both clusters. If both clusters use the same Zookeeper cluster, you have to use a different zookeeper.znode.parent since they can't write in the same folder.

   5、  在从集群中创建一个与master集群相同的表

   6、 修改表定义,开启复制功能

disable 'your_table'

alter 'your_table', {NAME => 'family_name', REPLICATION_SCOPE => '1'}

    enable 'your_table

此处的REPLICATION_SCOPE => '1'中的1,与第3步中设置到“ID”相同

 

 

可以通过工具VerifyReplication对复制的数据一致性进行校验,需在主集群执行,例如:

hbase org.apache.hadoop.hbase.mapreduce.replication.VerifyReplication --starttime=1265875194289 --stoptime=2265878794289 1 test4

 

用法如下:

 
提示:

 

   1、 hbasereplication,如果是在建立主表和从表的关系前,主表已经有数据则该部分数据不会被同步到从表中,因为replication是依赖WAL日志进行的同步,可以通过如下步骤实现:

 

      a)   通过snapshot把历史数据导入到从集群;

 

      b)   开启replication

 

      c)   通过Export工具把快照和开启replication之间的数据导入到从表;

 

      d)   通过VerifyReplication工具校验数据的一致性。

 

   2、  如果客户端在写入数据时设置不写WAL日志,则会导致从集群不会同步数据;

 

   3、  主从同步是异步的,因此数据不一定会立即同步到从表;

 

   4、  创建主、从表后,在向主表写入数据时,停止从集群,写完后再开启从集群,这时如果主集群的WAL日志还在则会同步到从表中;

由于不写WAL日志的数据不会被同步到从集群,因此对于重要的数据建议再通过snapshot进行定期的备份。

 

 

  • 大小: 45.4 KB
  • 大小: 25.7 KB
  • 大小: 30.5 KB
  • 大小: 23.7 KB
  • 大小: 20.5 KB
分享到:
评论

相关推荐

    阿里的HBase业务和容灾实践

    容灾实践是HBase使用中非常重要的部分,它涉及数据备份、故障转移等机制来保证数据的可用性、完整性和一致性。在容灾设计中,需要考虑以下方面: - 保证数据多副本存储,确保数据在部分节点故障时不会丢失。 - 实现...

    2.阿里云HBase X-Pack数据存储检索分析平台.pdf

    在企业级备份方面,云HBase提供了无源集群影响、支持大规模集群备份、RPO和RTO的严格控制(即恢复点目标和恢复时间目标)等功能,满足企业对数据安全和容灾的需求。备份恢复机制保证了数据的安全性和可恢复性,支持...

    Hbase+Spring boot实战分布式文件存储

    2-1 HBase简介及其在大数据生态圈的位置 2-2 HBase数据存储模型及与关系型数据库的区别 2-3 Hadoop伪分布式集群安装 2-4 HBase伪分布式集群安装 2-5 HBase基础架构 2-6 HBase阶段小结 第3章 HBase原理与实战 介绍...

    蚂蚁金服、支付宝、海量账单、高并发查询、存储、容灾解决方案

    8. **故障恢复与数据备份**:定期进行数据备份,利用如Hadoop的MapReduce框架进行批量处理和分析。在出现故障时,能快速恢复到正常状态。 9. **Java技术栈**:由于标签提到"java",说明该解决方案可能基于Java开发...

    云迁移与云容灾云上数据库迁移与云原生容灾.pdf

    云原生容灾是一种基于云计算平台提供的容灾能力,它利用云的可扩展性、弹性和按需服务的特点,设计出能够自动适应各种灾难场景的容灾方案。云原生容灾的目标是让灾备变得触手可及,即通过高度集成的云服务,实现快速...

    大数据时代云数据库HBase架构.pptx

    同时,通过多租户机制和跨可用区的部署,实现了资源的共享和容灾备份,确保了服务的高可用性和数据的安全性。 在实际应用中,HBase已在车联网、风控、社交网络和金融等多个领域发挥了关键作用。例如,某车联网公司...

    云时代数据库迁移 & 容灾技术新进展与应用.pdf

    云时代的容灾技术不仅涉及数据备份,还包括实时同步、多区域部署、跨地域复制等,如阿里云的DTS(Data Transmission Service)和DBS(Database Backup Service)等服务,为企业提供高可用和灾难恢复解决方案。...

    阿里云 专有云企业版 V3.8.0 云数据库 HBase 用户指南 20190621.pdf

    - 用户需要了解如何定期备份HBase数据,以防数据丢失。 - 恢复策略可能包括从备份中恢复,或者使用时间点恢复功能。 10. **最佳实践**: - 文档可能会提供如何设计表结构、数据模型的最佳实践,以提高效率和可...

    医疗健康大数据中心建设规划方案.zip

    1. 数据存储与管理:构建高效、可靠的分布式存储系统,支持大规模数据的存取和备份,同时考虑数据生命周期管理和容灾恢复策略。 2. 数据清洗与治理:对收集的数据进行预处理,去除噪声、纠正错误、填充缺失值,确保...

    Java分布式文件存储项目开发视频教程 (Hbase分布式数据库+Spring boot技术)

    - **容灾机制**:介绍HBase的容灾机制,包括数据备份、恢复策略等。 - **集群监控**:学习如何使用工具(如Hadoop生态系统中的Ambari)来监控HBase集群的运行状态。 #### Phoenix & Sqoop(第6章) - **Phoenix...

    阿里云 专有云企业版 V3.8.0 云数据库 HBase 产品简介 20190621.pdf

    综上所述,阿里云专有云企业版V3.8.0的云数据库HBase是面向大数据时代的强大数据库解决方案,它集成了HBase的高性能、高可用性和可扩展性,为企业的大数据处理和实时分析提供了可靠保障。用户在使用过程中,应遵循...

    大数据中枢平台解决方案.docx

    - **数据存储与管理**:提供高效、安全的数据存储方案,支持分布式存储及容灾备份,同时配备数据管理工具方便用户操作。 - **数据处理与分析**:利用大数据处理技术和分析算法对数据进行深入挖掘,提取有价值的信息...

    02 FusionInsight HD 产品解决方案1

    - FusionInsight HD支持数据备份和主备/HA方案,确保在出现故障时,数据和服务能够快速恢复。 总的来说,FusionInsight HD是面向企业大数据需求的全面解决方案,通过开放的架构、强大的计算能力、丰富的组件和工具...

    华为云大数据中台架构分享.pdf

    此外,华为云提供了全面的运维支持和服务,包括性能优化、容灾备份、安全防护等,确保大数据中台的稳定运行。通过构建大数据中台,企业能够更好地释放数据的价值,加速数字化转型进程,实现业务的智能化升级。

    10大HBase常见运维工具整理小结

    - **适用场景**:大型分布式系统,需要高可用和数据备份。 10. **HLog Splitter** - **日志切分**:处理HBase WAL(Write-Ahead Log)日志,确保数据一致性和故障恢复。 - **影响**:对集群影响较小,但对故障...

    大数据环境下警用地理信息系统运维方案研究.zip

    3. 容灾备份:建立完善的数据备份和恢复机制,确保在灾难情况下数据的安全性。 4. 更新升级:随着技术发展,及时对系统进行升级,引入新的功能和优化算法。 五、培训与协作 1. 培训体系:对警务人员进行大数据和...

    华为HCIE-Big Data【大数据】培训教材与实验指导手册.zip

    此外,还将涉及数据备份、恢复和容灾策略。 6. **大数据项目实践**: 实验指导手册将提供一系列实战案例,帮助学习者通过实际操作来巩固理论知识,例如构建大数据处理流水线、实现数据仓库和数据湖等。 7. **数据...

    02于俊大规模日志数据平台架构面临的问题与挑战.pdf

    - 为保证数据不丢失,数据平台必须具有强大的事务管理能力,以及鲁棒的数据备份和恢复策略。 - 零丢失还需要从系统设计上考虑数据冗余和校验机制,确保数据的完整性和一致性。 接下来,平台架构演进之路涉及到了...

Global site tag (gtag.js) - Google Analytics