Metalog 框架包含了定义Metalog子系统的类集。
基本组织结构
namespace Hypertable {
namespace MetaLog {
clsss XXX{
}
}
}
以下说明,都基于上述组织结构
MetaLog.h
Metalog文件具体内容:
每个日志文件保存服务器的执行完整状态和状态转换。
class Header ---编解码Metalog 文件头部
Encode a 16-bit integer in little-endian order
MetaLogDefinition.h
class Definition ---抽象基类,
派生类为特定的服务器定义有效MetaLog 实体
class Entity ---MetaLog 实体的单例基类
MetaLog entity 是被持久化到MetaLog文件中的。使用MetaLog API的方法可以对Entity对象进行读,写。
A meta log is a server state log and is currently used by both the RangeServer and the Master servers.
class Reader && class Writer ---Meta log 读写辅助类
class EntityHeader ---编解码序列化实体头(序列化在MetaLog文件中的实体状态)
entity 有多版本,读取时获取最新版本的返回
MetaLog 主要分为两类 ---Master && RangeServer
class DefinitionMaster
class DefinitionRangeServer
Metalog包含了一组数字命名的目录文件,每个文件包含一个服务器运行从开始到结束的状态和状态转换。
两种类型metalog文件保存分别为mml,rsml
保存在hdfs上的路径类似如下
/hypertable/servers/master/log/mml/0
/hypertable/servers/rs1/log/rsml/0 (rs1: 相应的rangeserver)
保存在本地的备份路径为:
hypetable安装路径下
/run/log_backup/mml/master_38050/0 (Master 机器上)
/run/log_backup/rsml/rs1/0(Rangeserver 机器上)
class MetaLogEntityRange --- MetaLog entity for range state persisted in RSML
读写metalog
namespace Hypertable {
/**
* Abstract base class for a filesystem. All commands have synchronous and
* asynchronous versions. Commands that operate on the same file descriptor
* are serialized by the underlying filesy