`
bupt04406
  • 浏览: 343628 次
  • 性别: 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

    Idp_S_Mysql2Hbase-1.0-SNAPSHOT-jar-with-dependencies

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

    hbase-hbck2-1.2.0-SNAPSHOT.jar

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

    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

    geomesa-hbase安装包

    编译好的geomesa-hbase安装包 安装包名: geomesa-hbase_2.11-2.1.0-SNAPSHOT-bin.tar.gz

    apache_hbase_reference_guide-3.0.0-SNAPSHOT

    hbase 3.0.0 官方参考指南,英文版本的,提供了非常详细的介绍,方方面面,包括基本架构、配置详解、以及与其它版本的差别。

    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)

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

    ranger-2.0.0-SNAPSHOT-hbase-plugin.tar.gz 配合RANGER-ADMIN使用

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

    atlas hbase编译好的hook包

    Hbase_目录结构.pptx

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

    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。经测试没有问题。

    hbase-rdd, 从HBase读取并写入 RDD.zip

    hbase-rdd, 从HBase读取并写入 RDD ? 这个项目允许将 Apache Spark 连接到 HBase 。 现在可以在 Scala 2.10和版本 2.11上使用Spark和 CDH5.0. 版本,在版本/版本 0.2.2-SNAPSHOT 工作时使用Spark和版本

    HBase官方文档中文版

    Revision 0.97.0-SNAPSHOT 2013-04-07T14:59 中文版翻译整理 周海汉

    HBase原理–分布式系统中snapshot是怎么玩的?

    snapshot是很多存储系统和数据库系统都支持的功能。一个snapshot是一个全部文件系统、或者某个目录在某一时刻的镜像。实现数据文件镜像最简单粗暴的方式是...在HBase这种LSM类型系统结构下是比较容易理解的,我们知道HB

    sample-hbase-app:通过HBase API与HBase通信的示例Java应用程序

    注意:ZooKeeper的IPC端口必须可访问Maven指令在工作站上编译mvn packagels -lh target/*.jar-rw-r--r-- 1 david staff 8.4K Oct 4 23:29 target/hbase-app-0.0.1-SNAPSHOT.jar-rw-r--r-- 1 david staff 31M Oct 4 ...

    hbase-avro-hive

    HBase-Hive-Avro 该项目演示了如何通过Hive...$ export CP=/etc/hbase/conf: $( hbase classpath ) :./target/hbase-1.0-SNAPSHOT.jar $ java -cp $CP com.cloudera.sa.examples.HBasePut 接下来,创建Hive表并查看H

    ranger-2.0.0-hbase-plugin.tar.gz

    由于很多文章都是只有ranger的安装说明,却没有编译后的tar包,而且编译的时间有点长,编译期间会出现各种问题,导致编译不过,特此上传编译后的包,来提供大家下载

    apache_hbase_reference_guide.pdf

    Apache Hbase 指南,3.0.0-SNAPSHOT 版本。 Intro,Configure,Upgrade,Shell,Data Model,Schema Design,Hbase and MapReduce,Security,Architecture,In-memory Compaction,Backup and Restore, ...

    squirrel-sql-snapshot-20200220_2238-standard.jar

    非常好用的一款SQL windows客户端软件,采用java编写的。可连DB2\Oracle\Sybase\Microsoft SQL\MySQL\Postgresql,包含使用phoenix连接hbase库,支持对数据库的各种操作,最新版本。

Global site tag (gtag.js) - Google Analytics