`
bupt04406
  • 浏览: 348384 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

hbase snapshot

 
阅读更多

 

Snapshot:
(1) take a snapshot
table是在enable状态,那么使用EnabledTableSnapshotHandler
table是在disable状态,使用DisabledTableSnapshotHandler,在HMaster端完成所有操作
(2) getCompletedSnapshots
获得已完成的snapshot,正在进行中的被忽略
(3) deleteSnapshot
直接删除snapshot对应的目录
(4) isSnapshotDone
查看snapshot是否完成,从snapshotHandlers队列中获得信息
(5) restoreSnapshot
table是否存在
存在,必须是disable状态,RestoreSnapshotHandler,restore到相应的状态
不存在,CloneSnapshotHandler,clone一个table。大部分利用CreateTableHandler的代码,把handleCreateHdfsRegions这块替换掉
(6) isRestoreSnapshotDone
查看restore是否完成,从restoreHandlers队列中获得信息

MasterSnapshotVerifier是验证用的
(1) SnapshotDescription is readable
(2) Table info is readable
(3) Regions

  • <li>Matching regions in the snapshot as currently in the table</li>
  • <li>{@link HRegionInfo} matches the current and stored regions</li>
  • <li>All referenced hfiles have valid names</li>
  • <li>All the hfiles are present (either in .archive directory in the region)</li>
  • <li>All recovered.edits files are present (by name) and have the correct file size</li>
 

在take a snapshot时,table在enable状态下使用 EnabledTableSnapshotHandler

HMaster做为master,执行Procedure
RegionServer做为slave执行Subprocedure,负责snapshot region
通过zk通信,完成任务的协商,slave什么时候开始执行任务(master发起一个任务,slave接收到通知后告诉master可以开始,等所有 slave都ok后就可以开始这次snapshot了),执行什么任务(snapshot那个表的region),slave任务结束后告知master 已完成,等所有slave都完成后就表明本次snapshot完成。

Master端zk处理是在ZKProcedureCoordinatorRpcs.java
Slave端的zk处理是ZKProcedureMemberRpcs.java
通过zk事件来触发相关任务和进度往下执行

 

EnabledTableSnapshotHandler

ZKProcedureCoordinatorRpcs
ZKProcedureMemberRpcs

Master 端启动一个 Procedure
(1) Master Procedure.sendGlobalBarrierAcquire
Notify the members to acquire barrier for the procedure
创建zk节点,类型是acquire znode,比如snapshot名字是t1-s2,那么节点是/hbase/online-snapshot/acquired/t1-s2
等待各个Subprocedure(HRegionServer上面)收到zk事件,并创建相应的zk节点

(2) HRegionServer监听到zk事件,发现是acquiredZnode节点
启动一个Subprocedure,Subprocedure.acquireBarrier
在acquire znode节点下创建一个子节点
等待本次Procedure到达reached状态,Subprocedure.waitForReachedGlobalBarrier

(3) Master收到acquire znode节点下面有子节点创建的消息,进行计数
当收到所有节点创建了子节点后就可以往后执行了,也就是达成一致

(4) Master Procedure.sendGlobalBarrierReached

  • Notify members that all members have acquired their parts of the barrier and that they can now execute under the global barrier.
    创建zk节点,类型是reached znode,/hbase/online-snapshot/reached/t1-s2
    等待所有成员完成任务,wait for all members to report barrier release

(5) HRegionServer监听到zk事件,发现是reachedZnode节点,触发Subprocedure的receiveReachedGlobalBarrier
Subprocedure往下执行,Subprocedure.insideBarrier,这里的Subprocedure是FlushSnapshotSubprocedure
在Subprocedure.insideBarrier里面执行HRegion的flush和snapshot
完成任务后,Subprocedure在reachedZnode节点下创建子节点说明他已经完成了任务,并且结束Subprocedure

(6) Master端收到reachedZnode节点下面有子节点创建的消息,进行计数
当收到所有Subprocedure创建子节点的消息后,就可以说明所有任务都执行完成了,往下继续执行

(7) Procedure.sendGlobalBarrierComplete

本次Procedure结束

 

 

Snapshot的目录结构见SnapshotDescriptionUtils

* Snapshots are laid out on disk like this:
 *
 * <pre>
 * /hbase/.snapshots
 *          /.tmp                <---- working directory
 *          /[snapshot name]     <----- completed snapshot
 * </pre>
 *
 * A completed snapshot named 'completed' then looks like (multiple regions, servers, files, etc.
 * signified by '...' on the same directory depth).
 *
 * <pre>
 * /hbase/.snapshots/completed
 *                   .snapshotinfo          <--- Description of the snapshot
 *                   .tableinfo             <--- Copy of the tableinfo
 *                    /.logs
 *                        /[server_name]
 *                            /... [log files]
 *                         ...
 *                   /[region name]           <---- All the region's information
 *                   .regioninfo              <---- Copy of the HRegionInfo
 *                      /[column family name]
 *                          /[hfile name]     <--- name of the hfile in the real region
 *                          ...
 *                      ...
 *                    ...
 
分享到:
评论

相关推荐

    hbase-hbck2-1.1.0-SNAPSHOT.jar

    hbase-hbck2-1.1.0-SNAPSHOT.jar

    hbase,mysql备份压缩springboot代码

    2. **增量备份**:HBase支持基于时间戳的快照功能,可以通过`hbase snapshot`命令创建快照,然后将这些快照导出到另一个集群或HDFS位置。 3. **压缩备份**:在备份过程中,可以对数据进行压缩,减少存储空间。HBase...

    hbase-hbck2-1.2.0-SNAPSHOT.jar

    HBCK是HBase1.x中的命令,到了HBase2.x中,HBCK命令不适用,且它的写功能(-fix)已删除; HBCK2已经被剥离出HBase成为了一个单独的项目,如果你想要使用这个工具,需要根据自己HBase的版本,编译源码。其GitHub地址...

    Idp_S_Mysql2Hbase-1.0-SNAPSHOT-jar-with-dependencies

    参考:https://blog.csdn.net/yangbutao/article/details/12911487

    snapshot-s3-util:用于将HBase快照导出到S3和从S3导出的工具

    建造mvn clean package跑步创建快照并立即导出到S3 hadoop jar target/snapshot-s3-util-1.0.0.jar ... BackupUtil [-a] -b &lt;arg&gt; -c | -e | -i | -x [-d ] -k &lt;arg&gt; [-l ] [-m ] [-n ] [-p ] -s &lt;arg&gt; [-t &lt;arg&gt;

    geomesa-hbase安装包

    3. 配置环境变量:在系统环境变量中添加Geomesa-HBase的路径,如`export GEOMESA_HBASE_HOME=/path/to/geomesa-hbase-2.1.0-SNAPSHOT`。 4. 链接HBase:在HBase的conf/hbase-site.xml中配置Geomesa的相关属性,如`...

    HBase hbck 2.0 jar包下载

    该文件为hbase hbck2 jar;适用于hbase 2.x维护,hbase 1.x不适用;对于HBase跨集群HD集群迁移,当HDFS文件迁移后,...当前版本:hbase-hbck2-1.3.0.jarhbase hbck -j /opt/software/hbase-hbck2-1.3.0-SNAPSHOT.jar

    apache_hbase_reference_guide-3.0.0-SNAPSHOT

    【标题】中的 "apache_hbase_reference_guide-3.0.0-SNAPSHOT" 指出了这是一份关于 HBase 版本 3.0.0 的快照版官方参考指南。这意味着它可能包含了 3.0.0 版本即将发布的特性以及可能的不稳定因素。参考指南通常详细...

    hbase和hadoop数据块损坏处理

    * hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot 'snap_test' -copyto /data/huang_test:将快照导出到 HDFS * clone_snapshot 'snap_test', 'test':将快照恢复到 HBase 表中 五、手动修复 ...

    hbase基于快照的数据迁移

    /usr/hdp/2.3.4.7-4/hbase/bin/hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot snapshot 'snap_table_test1' copy-to hdfs://10.106.1.165:8020/apps/hbase/data --overwrite ``` #### 三、目标集群操作...

    apache-atlas-2.0.0-SNAPSHOT-hbase-hook.tar.gz

    在描述中提到的 "atlas hbase 编译好的 hook 包" 指的是这个 `apache-atlas-hbase-hook-2.0.0-SNAPSHOT` 文件,这是一个已经编译完成的可部署组件,可以直接在运行中的 Atlas 和 HBase 集群上使用。SNAPSHOT 版本...

    ranger-2.0.0-SNAPSHOT-hbase-plugin.tar.gz

    在下载并解压“ranger-2.0.0-SNAPSHOT-hbase-plugin.tar.gz”文件后,我们得到了“ranger-2.0.0-SNAPSHOT-hbase-plugin”目录,这包含了所有必要的组件和服务。安装过程通常包括以下几个步骤: 1. **系统准备**:...

    phoenix-core-4.7.0-HBase-1.1-API文档-中文版.zip

    赠送jar包:phoenix-core-4.7.0-HBase-1.1.jar; 赠送原API文档:phoenix-core-4.7.0-HBase-1.1-javadoc.jar; 赠送源代码:phoenix-core-4.7.0-HBase-1.1-sources.jar; 赠送Maven依赖信息文件:phoenix-core-4.7.0...

    hbase备份恢复实例

    hbase(main):003:0&gt; snapshot 'test', 'test_snapshot' ``` 上述命令会在几秒内完成,并且对整个集群的性能影响几乎可以忽略不计。 2. **查看快照**:使用`list_snapshots`命令可以列出当前所有的快照信息,包括...

    Hbase 的shell基本操作

    HBase是Apache的一个开源非关系型分布式数据库(NoSQL),它是建立在Hadoop文件系统(HDFS)之上,适用于需要快速读/写访问大量随机数据的场景。HBase采用了Google的Bigtable数据模型,底层物理存储采用了列存储的...

    hbase hbck2 jar

    hbase hbck2 jar; 完整打包;...使用命令:hbase hbck -j hbase-hbck2-1.3.0-SNAPSHOT.jar fixMeta,最后两个参数分别代表 hbck2 jar包路径,维护命令(hbase-hbck2-1.3.0-SNAPSHOT.jar fixMeta)

    HBase 官方文档

    - **修订历史**:版本 0.97.0-SNAPSHOT 发布于 2013 年 4 月 7 日,由周海汉完成中文版翻译整理工作。与之前的 0.90 版本相比,文档内容进行了较大的补充和更新。 #### 二、HBase 快速入门 - **介绍**:HBase 被...

    hive0.8.1和hbase0.92.0集成的hive-hbase-handler.Jar包

    hive0.8.1和hbase0.92.0集成的hive-hbase-handler.Jar包,里面包含:hbase-0.92.0.jar、hbase-0.92.0-tests.jar、hive-hbase-handler-0.9.0-SNAPSHOT.jar。经测试没有问题。

    ranger-2.0.0-hbase-plugin.tar.gz

    它支持多种数据存储和服务,包括Hadoop、Hive、HBase等。Ranger 的一个重要功能是为这些组件提供细粒度的访问控制,确保数据的安全性。在这个场景中,我们关注的是Ranger与HBase的集成,即“ranger-2.0.0-hbase-...

    Hbase_目录结构.pptx

    /hbase/archive (1) 进行snapshot或者升级的时候使用到的归档目录。compaction删除hfile的时 候,也会把旧的hfile归档到这里等。 /hbase/corrupt (2) splitlog的corrupt目录,以及corrupt hfile的目录。

Global site tag (gtag.js) - Google Analytics