Hadoop 文档

General

Common

HDFS

MapReduce

MapReduce REST APIs

YARN

YARN REST APIs

YARN Service

Submarine

Hadoop Compatible File Systems

Auth

Tools

Reference

Configuration

总览

脱机Edits Viewer是用于解析Edits日志文件的工具。当前的处理器对于在不同格式之间进行转换最为有用,其中包括XML,该XML易于阅读并且比本地二进制格式更易于编辑。

该工具可以解析-18(大致为Hadoop 0.19)及更高版本的编辑格式。该工具仅对文件运行,不需要运行Hadoop集群。

支持的输入格式:

  1. binary:Hadoop内部使用的本机二进制格式
  2. xml:由XML处理器产生的XML格式,如果文件名具有.xml(不区分大小写)扩展名,则使用

注意:不允许XML / Binary格式输入文件由相同类型的处理器处理。

脱机编辑查看器提供了几个输出处理器(除非另有说明,否则可以将处理器的输出转换回原始编辑文件):

  1. binary:Hadoop内部使用的本机二进制格式
  2. xml:XML格式
  3. stats:打印出统计信息,无法将其转换回Edits文件

用法

XML处理器

XML处理器可以创建一个包含编辑日志信息的XML文件。用户可以通过-i和-o命令行指定输入和输出文件。

   bash $ bin / hdfs oev -p xml -i edits -o edits.xml

XML处理器是“离线编辑查看器”中的默认处理器,用户也可以使用以下命令:

   bash $ bin / hdfs oev -i编辑-o edits.xml

这将导致以下输出:

   <?xml版本=“ 1.0”编码=“ UTF-8”?>
   <编辑>
     <EDITS_VERSION> -64 </ EDITS_VERSION>
     <记录>
       <OPCODE> OP_START_LOG_SEGMENT </ OPCODE>
       <数据>
         <TXID> 1 </ TXID>
       </ DATA>
     </ RECORD>
     <记录>
       <OPCODE> OP_UPDATE_MASTER_KEY </ OPCODE>
       <数据>
         <TXID> 2 </ TXID>
         <DELEGATION_KEY>
           <KEY_ID> 1 </ KEY_ID>
           <EXPIRY_DATE> 1487921580728 </ EXPIRY_DATE>
           <KEY> 2e127ca41c7de215 </ KEY>
         </ DELEGATION_KEY>
       </ DATA>
     </ RECORD>
     <记录>
   ...剩余的输出被省略...

二进制处理器

二进制处理器与XML处理器相反。用户可以通过-i和-o命令行指定输入XML文件和输出文件。

   bash $ bin / hdfs oev -p二进制-i edits.xml -o编辑

这将从XML文件重建编辑日志文件。

统计处理器

统计处理器用于汇总编辑日志文件中包含的操作码计数。用户可以通过-p选项指定此处理器。

   bash $ bin / hdfs oev -p统计-i编辑-o edits.stats

该处理器的输出结果应类似于以下输出:

   版本:-64
   OP_ADD(0):8
   OP_RENAME_OLD(1):1
   OP_DELETE(2):1
   OP_MKDIR(3):1
   OP_SET_REPLICATION(4):1
   OP_DATANODE_ADD(5):0
   OP_DATANODE_REMOVE(6):0
   OP_SET_PERMISSIONS(7):1
   OP_SET_OWNER(8):1
   OP_CLOSE(9):9
   OP_SET_GENSTAMP_V1(10):0
   ...省略了一些输出...
   OP_APPEND(47):1
   OP_SET_QUOTA_BY_STORAGETYPE(48):1
   OP_ADD_ERASURE_CODING_POLICY(49):0
   OP_ENABLE_ERASURE_CODING_POLICY(50):1
   OP_DISABLE_ERASURE_CODING_POLICY(51):0
   OP_REMOVE_ERASURE_CODING_POLICY(52):0
   OP_INVALID(-1):0

输出格式设置为以冒号分隔的两列表:OpCode和OpCodeCount。每个操作码对应于NameNode中的特定操作。

选件

描述
[ -i ; --inputFile ] 输入文件 指定要处理的输入编辑日志文件。Xml(不区分大小写)扩展名表示XML格式,否则假定为二进制格式。需要。
[ -o ; --outputFile ] 输出文件 如果指定的输出处理器生成一个文件名,则指定输出文件名。如果指定的文件已经存在,它将被静默覆盖。需要。
[ -p ; --processor ] 处理器 指定要应用于图像文件的图像处理器。当前有效的选项是binaryxml(默认)和stats
[ -v ; --verbose ] 将处理器的输入和输出文件名以及管道输出打印到控制台以及指定文件。在非常大的文件上,这可能会使处理时间增加一个数量级。
[ -f ; --fix-txids ] 在输入中重新编号事务ID,以便没有空格或无效的事务ID。
[ -r ; --recover ] 读取二进制编辑日志时,请使用恢复模式。这将使您有机会跳过编辑日志的损坏部分。
[ -h ; --help ] 显示工具用法和帮助信息,然后退出。

案例研究:Hadoop集群恢复

如果hadoop群集出现问题,并且编辑文件已损坏,则可以保存至少一部分正确的编辑文件。可以通过将二进制编辑转换为XML,手动进行编辑,然后再将其转换回二进制来完成。最常见的问题是edits文件缺少结束记录(具有opCode -1的记录)。该工具应识别出该错误,并且应正确关闭XML格式。

如果XML文件中没有结束记录,则可以在最后一个正确的记录之后添加一个。opCode -1记录之后的所有内容都将被忽略。

关闭记录示例(使用opCode -1):

  <记录>
    <OPCODE> -1 </ OPCODE>
    <数据>
    </ DATA>
  </ RECORD>