Hypertable工具之metalog_dump

命令:metalog_dump [options] <log-dir>
该命令可以导出指定的MetaLog文件的内容,也可以导出指定目录下所有MetaLog文件的内容。该命令只能操作MetaLog,不能操作Commit Log,即只能操作mml(适用于master)和rsml(适用于RangeServer)目录或其中的文件。
MML(Master的MetaLog)记录了Master维护META数据的过程,例如:创建namespace、创建table、调度进行RangeServer间的负载均衡等操作均会记录在MetaLog中。
rsml(RaneServer的MetaLog)记录了RaneServer维护META数据的过程,因为RangeServer维护的META数据主要是range信息,所以MetaLog中记录的主要为该台RangeSever上的range的变迁记录,例如:range的split、compaction、transfer等记录。
Options:
  --dfs arg            DFS client endpoint in <host:port> format
  --dfs-timeout arg     Timeout in milliseconds for DFS client connections
  -h [ --help ]        Show this help message and exit
  --help-config        Show help message for config properties
  --version           Show version information and exit
  -v [ --verbose ]     Show more verbose output
  --debug           Show debug output (shortcut of --logging-level debug)
  --quiet           Negate verbose
  --silent          Show as little output as possible
  -l [ --logging-level ] arg (=info)   Logging level: debug, info, notice, warn, error, crit, alert, fatal
  --config arg (=/dinglicom/hypertable/0.9.7.2/conf/hypertable.cfg) Configuration file.                                                                    
  --induce-failure arg    Arguments for inducing failure
  --workers arg         Number of worker threads
  --reactors arg        Number of reactor threads
  -t [ --timeout ] arg   System wide timeout in milliseconds
  --all                Display all entities in log (not just latest state)
  --metadata-tsv       For each Range, dump StartRow and Location .tsv lines
  --location arg       Used with --metadata-tsv to specify location proxy
  --print-logs        Print log files, one per line

  --show-version     Display log version number and exit


1 All参数
导出MetaLog中所有的Entity, Entity是MetaLog的最小记录单元。

示例:metalog_dump  --all  /hypertable/servers/master/log/mml/0; 可得到下面类似的结果:
log version: 1
{MetaLog::Entity OperationCreateNamespace header={type=196618,checksum=1763651459,id=7,timestamp=Thu May 16 10:56:18 2013,flags=0,length=56} payload={ state=INITIAL remove_approvals=0 name=/sys flags=0 exclusivities=/sys dependencies= obstructions=initialize[0] }
……
{MetaLog::Entity OperationCreateNamespace header={type=196618,checksum=-652266621,id=7,timestamp=Thu May 16 10:56:18 2013,flags=0,length=56} payload={ state=ASSIGN_ID remove_approvals=0 name=/sys flags=0 exclusivities=/sys dependencies= obstructions=initialize[0] }
……
{MetaLog::Entity OperationInitialize header={type=196612,checksum=-1833518834,id=3,timestamp=Thu May 16 10:56:18 2013,flags=0,length=54} payload={ state=STARTED remove_approvals=0 root-location='' 2nd-metadata-location='' {TableIdentifier: id='' generation=0}  exclusivities= dependencies=initialize[0] obstructions=INIT }
……
{MetaLog::Entity RangeServerConnection header={type=131072,checksum=-124467518,id=11,timestamp=Thu May 16 10:56:30 2013,flags=0,length=33} payload={ rs1 state=0 }
……
{MetaLog::Entity OperationCreateTable header={type=196620,checksum=973795280,id=15,timestamp=Thu May 16 10:56:32 2013,flags=0,length=1066} payload={ state=ASSIGN_ID remove_approvals=0 name=/sys/RS_METRICS {TableIdentifier: id='' generation=0}  location=  exclusivities=/sys/RS_METRICS dependencies=METADATA,SYSTEM obstructions=initialize[2],initialize[3] }
……
试验表明:Entity的名称表示本次的操作,例如:看到OperationCreateNamespace、RangeServerConnection、OperationCreateTable等名称就能“顾名思义”了。在header中具有相同id的不同Entity表示同一操作的不同记录,当然它们的state应该不同,例如上述结果的前两条Entity。

示例:metalog_dump  --all  /hypertable/servers/rs2/log/rsml/1; 可得到下面类似的结果:
log version: 2
{MetaLog::Entity Range header={type=65538,checksum=1817927163,id=2,timestamp=Thu May 23 16:00:51 2013,flags=0,length=143} payload={ {TableIdentifier: id='2/0' generation=1} {RangeSpec: start='z17053820421369217533b' end='z17053879551368859366b'} {RangeState: state=STEADY timestamp=0 soft_limit=536870912 transfer_log='/hypertable/servers/rs1/log/2/0/Tm5BT7K-A_qHSd3I-1369296020' split_point='' old_boundary_row=''} needs_compaction=false load_acknowledged=false original_transfer_log= }
……
{MetaLog::Entity Range header={type=65538,checksum=-244154187,id=3,timestamp=Thu May 23 16:01:41 2013,flags=0,length=121} payload={ {TableIdentifier: id='2/0' generation=1} {RangeSpec: start='' end='a00000006611368753600d'} {RangeState: state=STEADY timestamp=0 soft_limit=268435456 transfer_log='/hypertable/servers/rs9/log/2/0/M5KzwFK8V1DWP4ha-1369296101' split_point='' old_boundary_row=''} needs_compaction=true load_acknowledged=false original_transfer_log= }
……
{MetaLog::Entity Range header={type=65538,checksum=-244350796,id=3,timestamp=Thu May 23 16:01:41 2013,flags=0,length=121} payload={ {TableIdentifier: id='2/0' generation=1} {RangeSpec: start='' end='a00000006611368753600d'} {RangeState: state=STEADY timestamp=0 soft_limit=268435456 transfer_log='/hypertable/servers/rs9/log/2/0/M5KzwFK8V1DWP4ha-1369296101' split_point='' old_boundary_row=''} needs_compaction=false load_acknowledged=false original_transfer_log= }
……
{MetaLog::Entity Range header={type=65538,checksum=-1547008448,id=9,timestamp=Thu May 23 16:01:45 2013,flags=0,length=143} payload={ {TableIdentifier: id='2/0' generation=1} {RangeSpec: start='a00000624991368695204d' end='a00000631101369159596d'} {RangeState: state=STEADY timestamp=0 soft_limit=268435456 transfer_log='/hypertable/servers/rs8/log/2/0/twsA7p7_eXOL6Awm-1369296102' split_point='' old_boundary_row=''} needs_compaction=true load_acknowledged=false original_transfer_log= }

……


2 缺省options参数时
导出MetaLog中具有最终状态的Entity,中间状态的Entity在使用all参数时导出。
示例:metalog_dump  /hypertable/servers/master/log/mml/0; 假设集群中有6台RangeServer,可得到下面类似的结果:
log version: 1
{MetaLog::Entity OperationInitialize header={type=196612,checksum=-94584162,id=3,timestamp=Thu May 16 10:56:18 2013,flags=0,length=32} payload={ state=COMPLETE remove_approvals=0 [HYPERTABLE ok] }
{MetaLog::Entity RangeServerConnection header={type=131072,checksum=160810946,id=11,timestamp=Thu May 16 10:56:30 2013,flags=0,length=33} payload={ rs1 state=BALANCED }
{MetaLog::Entity RangeServerConnection header={type=131072,checksum=159762367,id=12,timestamp=Thu May 16 10:56:31 2013,flags=0,length=33} payload={ rs2 state=BALANCED }
……
{MetaLog::Entity BalancePlanAuthority header={type=196608,checksum=83886336,id=19,timestamp=Thu May 16 10:56:32 2013,flags=0,length=10} payload={ generation 0 }
{MetaLog::Entity RangeServerConnection header={type=131072,checksum=159762366,id=21,timestamp=Thu May 16 10:56:33 2013,flags=0,length=33} payload={ rs5 state=BALANCED }
{MetaLog::Entity RangeServerConnection header={type=131072,checksum=162645957,id=23,timestamp=Thu May 16 10:56:35 2013,flags=0,length=33} payload={ rs6 state=BALANCED }

示例:metalog_dump  /hypertable/servers/rs2/log/rsml/1; 可得到下面类似的结果:
log version: 2
{MetaLog::Entity Range header={type=65538,checksum=1851481851,id=2,timestamp=Thu May 23 16:00:51 2013,flags=0,length=143} payload={ {TableIdentifier: id='2/0' generation=1} {RangeSpec: start='z17053820421369217533b' end='z17053879551368859366b'} {RangeState: state=STEADY timestamp=0 soft_limit=536870912 transfer_log='/hypertable/servers/rs1/log/2/0/Tm5BT7K-A_qHSd3I-1369296020' split_point='' old_boundary_row=''} needs_compaction=false load_acknowledged=true original_transfer_log= }
{MetaLog::Entity Range header={type=65538,checksum=-210796108,id=3,timestamp=Thu May 23 16:01:41 2013,flags=0,length=121} payload={ {TableIdentifier: id='2/0' generation=1} {RangeSpec: start='' end='a00000006611368753600d'} {RangeState: state=STEADY timestamp=0 soft_limit=268435456 transfer_log='/hypertable/servers/rs9/log/2/0/M5KzwFK8V1DWP4ha-1369296101' split_point='' old_boundary_row=''} needs_compaction=false load_acknowledged=true original_transfer_log= }
……
{MetaLog::Entity Range header={type=65538,checksum=-194999281,id=5,timestamp=Thu May 23 16:01:42 2013,flags=0,length=143} payload={ {TableIdentifier: id='2/0' generation=1} {RangeSpec: start='a00000531271369105591d' end='a00000601901368698063d'} {RangeState: state=STEADY timestamp=0 soft_limit=268435456 transfer_log='/hypertable/servers/rs8/log/2/0/trK_ySZzCMFN6h2P-1369296101' split_point='' old_boundary_row=''} needs_compaction=false load_acknowledged=true original_transfer_log= }

试验表明:使用缺省options参数时,一台RangeServer对应的rsml中,所有名称为Range的Entity数量,表示该台RangeServer维护的Range数量。例如:假设/hypertable/servers/rs2/log/rsml目录中只有一个MetaLog文件,当然文件名称应该为0.执行metalog_dump  /hypertable/servers/rs2/log/rsml/0时,得到结果中的名称为Range的Entity有80条,则表示rs2所标识的RangeServer当前维护了80个Range。可通过监控界面的RangeCount获取RangeServer维护的Range数目进行参考。


3 metadata-tsv和location参数
metadata-tsv参数只导出Range的StartRow 和Location,并以tsv格式展示。该参数只适用于rsml,不能用于mml,因为只有RangeServer才会维护Range信息。
在任意一台RangeServer上执行带有该参数的Metalog_dump命令时,显示结果中的Location默认都为该RangeServer的代理标识(rsN)。在Master上执行时,结果中的Location项都为空,并且首行提示下面类似的错误提示:
ERROR metalog_dump : (/root/src/hypertable/src/cc/Common/FileUtils.cc:289) open("/dinglicom/hypertable/0.9.7.7/run/location") failure - No such file or directory”
很明显,该参数企图在hypertable目录中寻找location文件中的代理标识,因为Master不具有代理标识,所以报错,并且结果中的Location项只能为空了。
Location参数只能和metadata-tsv参数合用,用于指定显示结果中Location项的值。如果在Master上使用此参数的话,则可以消除上述的错误提示。

示例:metalog_dump  --metadata-tsv /hypertable/servers/rs2/log/rsml/1; 可得到下面类似的结果:
……
2/0:a61005-----1368751151c StartRow a60859-----1368694358b
2/0:a61005-----1368751151c Location rs2
2/0:a32805502001368837054b StartRow a32706019161368799720b
2/0:a32805502001368837054b Location rs2
……
实验表明:该命令如果在rs2上执行, Location项显示为rs2;如果在rs3上执行, Location项显示为rs3;如果在Master上执行, Location项显示为空。

示例:metalog_dump  --metadata-tsv –location rs3 /hypertable/servers/rs2/log/rsml/1; 可得到下面类似的结果:
……
2/0:a61005-----1368751151c StartRow a60859-----1368694358b
2/0:a61005-----1368751151c Location rs3
2/0:a32805502001368837054b StartRow a32706019161368799720b
2/0:a32805502001368837054b Location rs3
……
实验表明:不管在集群中哪台机器上执行该命令, Location项都显示为rs3。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值