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
该方式,原表、目标表的名称相同
全部使用方式如下:
MR的map数量与表的region数相同,与HFile文件个数无关。
CopyTable工具采用scan查询,写入新表时采用put和delete API,全是基于hbase的client api进行读写,无法使用Import工具的bulk导入。
三、Export/Import
通过Export导出数据到目标集群的hdfs,再在目标集群执行import导入数据,Export支持指定开始时间和结束时间,因此可以做增量备份,Export工具参数如下:
可见,在导出时可以指定version,starttime,endtime等参数,并且可以通过-D指定是否压缩,指定caching等属性,比如:
hbase org.apache.hadoop.hbase.mapreduce.Export test4 hdfs://t2-namenode:9000/test4_90 1 1415693812520 1415694912520
Export导出工具与CopyTable一样是依赖hbase的scan读取数据,并且采用的InportFormat与CopyTable一样是TableInputFormat类,从该类的getSplits()方法可以看出MR的map数与hbase表的region数相同。
Import工具参数如下:
在import时可以指定使用bulk的方式,bulk是生成hfile格式的文件,直接导入到Region,无需经历hbase的写数据过程,从而无需消耗memstore,无需Flush等,更加高效,如果不指定bulk文件路径(hdfs的路径)则会采用hbase 的put和delete 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层面不是基于hbase的put、delete等API进行的,不会写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:9000的hdfs中会把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-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”相同
可以通过工具VerifyReplication对复制的数据一致性进行校验,需在主集群执行,例如:
hbase org.apache.hadoop.hbase.mapreduce.replication.VerifyReplication --starttime=1265875194289 --stoptime=2265878794289 1 test4
用法如下:
提示:
1、 hbase的replication,如果是在建立主表和从表的关系前,主表已经有数据则该部分数据不会被同步到从表中,因为replication是依赖WAL日志进行的同步,可以通过如下步骤实现:
a) 通过snapshot把历史数据导入到从集群;
b) 开启replication;
c) 通过Export工具把快照和开启replication之间的数据导入到从表;
d) 通过VerifyReplication工具校验数据的一致性。
2、 如果客户端在写入数据时设置不写WAL日志,则会导致从集群不会同步数据;
3、 主从同步是异步的,因此数据不一定会立即同步到从表;
4、 创建主、从表后,在向主表写入数据时,停止从集群,写完后再开启从集群,这时如果主集群的WAL日志还在则会同步到从表中;
由于不写WAL日志的数据不会被同步到从集群,因此对于重要的数据建议再通过snapshot进行定期的备份。
相关推荐
容灾实践是HBase使用中非常重要的部分,它涉及数据备份、故障转移等机制来保证数据的可用性、完整性和一致性。在容灾设计中,需要考虑以下方面: - 保证数据多副本存储,确保数据在部分节点故障时不会丢失。 - 实现...
在企业级备份方面,云HBase提供了无源集群影响、支持大规模集群备份、RPO和RTO的严格控制(即恢复点目标和恢复时间目标)等功能,满足企业对数据安全和容灾的需求。备份恢复机制保证了数据的安全性和可恢复性,支持...
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开发...
云原生容灾是一种基于云计算平台提供的容灾能力,它利用云的可扩展性、弹性和按需服务的特点,设计出能够自动适应各种灾难场景的容灾方案。云原生容灾的目标是让灾备变得触手可及,即通过高度集成的云服务,实现快速...
同时,通过多租户机制和跨可用区的部署,实现了资源的共享和容灾备份,确保了服务的高可用性和数据的安全性。 在实际应用中,HBase已在车联网、风控、社交网络和金融等多个领域发挥了关键作用。例如,某车联网公司...
云时代的容灾技术不仅涉及数据备份,还包括实时同步、多区域部署、跨地域复制等,如阿里云的DTS(Data Transmission Service)和DBS(Database Backup Service)等服务,为企业提供高可用和灾难恢复解决方案。...
- 用户需要了解如何定期备份HBase数据,以防数据丢失。 - 恢复策略可能包括从备份中恢复,或者使用时间点恢复功能。 10. **最佳实践**: - 文档可能会提供如何设计表结构、数据模型的最佳实践,以提高效率和可...
1. 数据存储与管理:构建高效、可靠的分布式存储系统,支持大规模数据的存取和备份,同时考虑数据生命周期管理和容灾恢复策略。 2. 数据清洗与治理:对收集的数据进行预处理,去除噪声、纠正错误、填充缺失值,确保...
- **容灾机制**:介绍HBase的容灾机制,包括数据备份、恢复策略等。 - **集群监控**:学习如何使用工具(如Hadoop生态系统中的Ambari)来监控HBase集群的运行状态。 #### Phoenix & Sqoop(第6章) - **Phoenix...
综上所述,阿里云专有云企业版V3.8.0的云数据库HBase是面向大数据时代的强大数据库解决方案,它集成了HBase的高性能、高可用性和可扩展性,为企业的大数据处理和实时分析提供了可靠保障。用户在使用过程中,应遵循...
- **数据存储与管理**:提供高效、安全的数据存储方案,支持分布式存储及容灾备份,同时配备数据管理工具方便用户操作。 - **数据处理与分析**:利用大数据处理技术和分析算法对数据进行深入挖掘,提取有价值的信息...
- **适用场景**:大型分布式系统,需要高可用和数据备份。 10. **HLog Splitter** - **日志切分**:处理HBase WAL(Write-Ahead Log)日志,确保数据一致性和故障恢复。 - **影响**:对集群影响较小,但对故障...
- FusionInsight HD支持数据备份和主备/HA方案,确保在出现故障时,数据和服务能够快速恢复。 总的来说,FusionInsight HD是面向企业大数据需求的全面解决方案,通过开放的架构、强大的计算能力、丰富的组件和工具...
此外,华为云提供了全面的运维支持和服务,包括性能优化、容灾备份、安全防护等,确保大数据中台的稳定运行。通过构建大数据中台,企业能够更好地释放数据的价值,加速数字化转型进程,实现业务的智能化升级。
3. 容灾备份:建立完善的数据备份和恢复机制,确保在灾难情况下数据的安全性。 4. 更新升级:随着技术发展,及时对系统进行升级,引入新的功能和优化算法。 五、培训与协作 1. 培训体系:对警务人员进行大数据和...
- 为保证数据不丢失,数据平台必须具有强大的事务管理能力,以及鲁棒的数据备份和恢复策略。 - 零丢失还需要从系统设计上考虑数据冗余和校验机制,确保数据的完整性和一致性。 接下来,平台架构演进之路涉及到了...
此外,还将涉及数据备份、恢复和容灾策略。 6. **大数据项目实践**: 实验指导手册将提供一系列实战案例,帮助学习者通过实际操作来巩固理论知识,例如构建大数据处理流水线、实现数据仓库和数据湖等。 7. **数据...