[Hbase]Hbase容灾方案

  介绍两种HBase的数据备份或者容灾方案:Snapshot,Replication;

一、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层面不是基于hbase的put、delete等API进行的,不会写WAL日志。

二、Replication

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

    1、  zookeeper不能被hbase托管,如果主从hbase集群共用一个zk集群,则zookeeper.znode.parent不能都是默认的hbase,可以配置为hbase-master和hbase-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”相同

 

提示:

 

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

 

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

 

      b)   开启replication;

 

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

 

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

 

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

 

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

 

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

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

转载于:https://www.cnblogs.com/szss/p/9928921.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值