オフラインエディットビューアーガイド

概要

オフラインエディットビューアーは、エディットログファイルを解析するためのツールです。現在のプロセッサーは、主にXMLを含むさまざまな形式間の変換に役立ちます。XMLは人間が読める形式であり、ネイティブバイナリ形式よりも編集が容易です。

このツールは、-18(おおよそHadoop 0.19)以降のエディット形式を解析できます。このツールはファイルのみを操作し、Hadoopクラスターを実行する必要はありません。

サポートされている入力形式

  1. binary: Hadoopが内部的に使用するネイティブバイナリ形式
  2. xml: XMLプロセッサーによって生成されるXML形式。ファイル名に.xml(大文字と小文字を区別しない)拡張子がある場合に使用されます。

注意:XML/バイナリ形式の入力ファイルは、同じタイプのプロセッサーで処理することはできません。

オフラインエディットビューアーは、いくつかの出力プロセッサーを提供します(特に明記されていない限り、プロセッサーの出力は元のエディットファイルに戻すことができます)。

  1. binary: Hadoopが内部的に使用するネイティブバイナリ形式
  2. xml: XML形式
  3. stats: 統計を出力します。これはエディットファイルに戻すことはできません。

使用法

XMLプロセッサー

XMLプロセッサーは、エディットログ情報を含むXMLファイルを作成できます。ユーザーは、-iおよび-oコマンドラインを介して入力ファイルと出力ファイルを指定できます。

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

XMLプロセッサーは、オフラインエディットビューアーのデフォルトのプロセッサーです。ユーザーは次のコマンドを使用することもできます。

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

これにより、次の出力が得られます。

   <?xml version="1.0" encoding="UTF-8"?>
   <EDITS>
     <EDITS_VERSION>-64</EDITS_VERSION>
     <RECORD>
       <OPCODE>OP_START_LOG_SEGMENT</OPCODE>
       <DATA>
         <TXID>1</TXID>
       </DATA>
     </RECORD>
     <RECORD>
       <OPCODE>OP_UPDATE_MASTER_KEY</OPCODE>
       <DATA>
         <TXID>2</TXID>
         <DELEGATION_KEY>
           <KEY_ID>1</KEY_ID>
           <EXPIRY_DATE>1487921580728</EXPIRY_DATE>
           <KEY>2e127ca41c7de215</KEY>
         </DELEGATION_KEY>
       </DATA>
     </RECORD>
     <RECORD>
   ...remaining output omitted...

バイナリプロセッサー

バイナリプロセッサーは、XMLプロセッサーの反対です。ユーザーは、-iおよび-oコマンドラインを介して入力XMLファイルと出力ファイルを指定できます。

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

これにより、XMLファイルからエディットログファイルが再構成されます。

統計プロセッサー

統計プロセッサーは、エディットログファイルに含まれるオペコードの数を集計するために使用されます。ユーザーは、-pオプションでこのプロセッサーを指定できます。

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

このプロセッサーの出力結果は、次の出力のようになります。

   VERSION                             : -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
   ...some output omitted...
   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

出力は、コロンで区切られた2列のテーブルとしてフォーマットされます:OpCodeとOpCodeCount。各OpCodeは、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に変換し、手動で編集してから、バイナリに戻すことで実行できます。最も一般的な問題は、エディットファイルに終了レコード(opCode -1のレコード)がないことです。これはツールによって認識され、XML形式は適切に閉じられる必要があります。

XMLファイルに終了レコードがない場合は、最後の正しいレコードの後に追加できます。opCode -1のレコード以降のものは無視されます。

終了レコードの例(opCode -1付き)

  <RECORD>
    <OPCODE>-1</OPCODE>
    <DATA>
    </DATA>
  </RECORD>