HMaster 功能之定期清理archive

在HBase中,HMaster不承担读写数据的任务,那HMaster的主要功能呢?
HMaster功能:

  1. 管理HRegionServer,实现其负载均衡
  2. 管理和分配HRegion,比如在HRegion split时分配新的HRegion;在HRegionServer退出时迁移其内的HRegion到其他HRegionServer上
  3. 监控集群中所有HRegionServer的状态(通过Heartbeat和监听ZooKeeper中的状态)
  4. 处理schema更新请求 (创建、删除、修改Table的定义), 如下图:
HMaster功能

除此之外还有:HMaster.HFileCleaner 定期清理archive下的文件 。

首先回顾下HBase 在HDFS上的物理目录结构:

/hbase/data
/hbase/archive
/hbase/.tmp
/hbase/corrupt
/hbase/hbase.id
/hbase/hbase.version
/hbase/WALs
/hbase/oldWALs
/hbase/.hbase-snapshot

  1. /hbase/data
    hbase 的核心目录,0.98版本里支持 namespace 的概念模型,系统会预置两个 namespace 即:hbase和default


    预置namespace

    /hbase/data/hbase 存储了存储了 HBase 的 namespace、meta 两个系统级表。namespace 中存储了 HBase 中的所有 namespace 信息,包括预置的hbase 和 default。


    namespace、meta

    hbase/data/default/ 存储所有用户数据表/hbase/data/default/表名
    用户表
  2. /hbase/archive
    存储表的归档和快照,HBase 在做 Split或者 compact 操作完成之后,会将 HFile 移到archive 目录中,然后将之前的 hfile 删除掉,该目录由 HMaster 上的一个定时任务定期去清理。存储表的归档和快照具体目录:/hbase/archive/data/default/表名/region名/列族名/fd2221d8d1ae4e579c21882f0ec4c5a5
  3. /hbase/.tmp
    这个目录用来存储临时文件,当对表进行操作的时候,首先会将表移动到该目录下,然后再进行操作。
  4. /hbase/hbase.id
    存储集群唯一的 cluster id 号,是一个 uuid。
  5. /hbase/hbase.version
    同样也是一个文件,存储集群的版本号,貌似是加密的,看不到,只能通过web-ui 才能正确显示出来。
  6. /hbase/WALs
    被HLog实例管理的WAL文件
  7. /hbase/oldWALs
    当/hbase/WALs 中的HLog文件被持久化到存储文件中,不再需要日志文件时,它们会被移动到/hbase/oldWALs目录。
  8. /hbase/.hbase-snapshot
    HBase 从0.95开始引入了Snapshot,可以对table进行Snapshot,也可以Restore到Snapshot。Snapshot可以在线做,也可以离线做。Snapshot的实现不涉及到table实际数据的拷贝,仅仅拷贝一些元数据,比如组成table的region info,表的descriptor,还有表对应的HFile的文件的引用。
    /hbase/.hbase-snapshot存储的是snapshot的相关信息。

snapshot 'memberTb','memberTbSnapshotOne'

对memberTb做snapshot后,会生成相应的.snapshotinfo和data.manifest


hbase-snapshot.png

定时清理任务的插件设置:
HFileCleaner 定期清理.archive目录下的HFile。
它会从hbase.master.hfilecleaner.plugins配置里加载所有BaseHFileCleanerDelegate。 只有所有delegate都同意才能被删除。

HFileCleaner

HFileCleaner执行的cleanerInterval默认为1分钟,archiveDir为hbase的archive路径:
Paste_Image.png

而HBase的配置可以看出来,source为programatically,即程序自动添加:

hbase.master.hfilecleaner.plugins

则,就是HFileLinkCleaner,SnapshotHFileCleaner,TimeToLiveHFileCleaner 这三种规则的约束来清理archive中的数据!

  1. HFileLinkCleaner
HFileLinkCleaner

/**

  • HFileLink cleaner that determines if a hfile should be deleted.
  • HFiles can be deleted only if there're no links to them.
  • When a HFileLink is created a back reference file is created in:
  •  /hbase/archive/table/region/cf/.links-hfile/ref-region.ref-table
    
  • To check if the hfile can be deleted the back references folder must be empty.
    */

如果对archive中的文件的引用不存在了,则可以删除
问题:/hbase/archive/table/region/cf/.links-hfile/ref-region.ref-table 从何而来?
回答:HBase 做split的时候

2.SnapshotHFileCleaner


SnapshotHFileCleaner

/**

  • Implementation of a file cleaner that checks if a hfile is still used by snapshots of HBase
  • tables.
    */

未被snapshots 引用的文件,可以删除

问题: snapshot为嘛会引用到archive中的文件?
回答: Hbase做major compact的时候。详情见HBase major compact 对snapshot 的影响

3.TimeToLiveHFileCleaner


TimeToLiveHFileCleaner

/**

  • HFile cleaner that uses the timestamp of the hfile to determine if it should be deleted. By
  • default they are allowed to live for {@value #DEFAULT_TTL}
    */

默认清理时间超过5分钟的HFile

参考内容;
http://blog.bcmeng.com/post/hbase-hdfs.html
http://www.cnblogs.com/nexiyi/p/hbase_on_hdfs_directory.html
http://ppg.iteye.com/blog/1888453
http://brianf.iteye.com/blog/1884885
http://46aae4d1e2371e4aa769798941cef698.devproxy.yunshipei.com/gzh1992n/article/details/47173753
http://www.cnblogs.com/tgzhu/p/5857035.html
http://www.cnblogs.com/foxmailed/p/3914117.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,392评论 5 470
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,258评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,417评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,992评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,930评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,199评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,652评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,327评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,463评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,382评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,432评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,118评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,704评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,787评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,999评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,476评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,057评论 2 341

推荐阅读更多精彩内容

  • HBase存储架构图 HBase Master 为Region server分配region 负责Region s...
    kimibob阅读 5,557评论 0 52
  • 入门指南 1. 简介 Quickstart会让你启动和运行一个单节点单机HBase。 2. 快速启动 – 单点HB...
    和心数据阅读 4,510评论 1 41
  • HBase Architectural Components(HBase架构组件) HBase架构也是主从架构,由...
    陌上疏影凉阅读 2,370评论 0 7
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,566评论 18 139
  • 1. HBase介绍,Hbase是什么? HBase -- Hadoop Database ,是一个高可靠、高性能...
    奉先阅读 3,724评论 1 36