Hypertable的Meta Log和Commit Log

        Meta Log描述了该台RS管理的Range,以及Range的操作,例如分裂、传输等操作。Commit Log存储了用户需要写入Hyperable的数据,并且周期性的会和Cellstor文件进行Compaction。
        Hypertable在HDFS上保存了两种Log,存储的目录结构如下.
/hypertable/servers/master/log/mml //Master的Meta Log
/hypertable/servers/rsi/log/root //ROOT METADATA表的Commit Log
/hypertable/servers/rsi/log/metadata //METADATA表的Commit Log
/hypertable/servers/rsi/log/system //RS_METRIC表的Commit Log(不是很确定。。。)
/hypertable/servers/rsi/log/rsml //MetaLog。
/hypertable/servers/rsi/log/user //用户表的Commit Log
/hypertable/servers/rsi/log/namespace_id/table_id //如果table_id对应的表有一个Range分裂或者传输到另一台RS,则会在此创建一个临时的传输日志,此日志链接到user目录下的Commit Log。
        其中:rsi为RangeServer标识,例如rs1。每个rsi目录下都会有rsml、user和namespace_id子目录。root、metadata一般只在rs1下存放,system有时出现rs1下,有时出现在其它rs目录下。

        Hypertable也在Master和RangeServer机器的本地磁盘上保存了Meta Log备份,这些备份与HDFS上的Meta Log保存一致。Master机器备份路径为:run/log_backup/mml/master_38050,RangeServer机器备份路径为:run/log_backup/rsml/rsi。

        理想的情况下,当CellCache中的数据被持久化到HDFS后,Commit Log就应该被清除。但实际上并不是这样的,据官方描述:
        因为每个Commit Log包含了多个Range的数据,所以只有这些Range被Compaction之后,这个Commit Log才能清除。后台维护线程默认优先进行Compaction,以便可以尽早的移除Commit Log。每个Range有一个称为“最早缓存版本”的属性,它标识了该Range对应的所有CellStore文件中所有Cell的最早的时间。每个Commit Log包含一个称为“最新Cell版本”的属性,它标识了包含的所有Cell的最新时间。一旦一个Commit Log对应的所有Range的“最早缓存版本”属性值都比Commit Log的“最新Cell版本”属性新,则这个Commit Log可以安全的移除了。“最早缓存版本”其实是每个Access Group的属性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值