【譯】Apache Hadoop 系列之四(Edits Viewer指

w39發表於2021-09-09

概述

離線Edits檢視器是一個解析Edits日誌檔案的工具。目前的程式用於不同格式之間的轉換,包括xml(比二進位制檔案更易讀且容易修改)。

這個工具可以解析formats -18及以後的版本。這個工具只操作檔案,並不需要Hadoop叢集處於執行狀態。

輸入格式支援:
1、二進位制
2、xml格式

輸出格式:
1、二進位制
2、xml格式
3、stats:列印統計資料

用法

XML Processor

將edits檔案轉換成xml格式,並輸出檔案

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...

Binary Processor

xml格式檔案轉二進位制

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

Stats Processor

統計edits日誌檔案中各個運算元量

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_INVALID                     ( -1): 0

選項

Flag Description
[-i ; --inputFile] input file Specify the input edits log file to process. Xml (case insensitive) extension means XML format otherwise binary format is assumed. Required.
[-o ; --outputFile] output file Specify the output filename, if the specified output processor generates one. If the specified file already exists, it is silently overwritten. Required.
[-p ; --processor] processor Specify the image processor to apply against the image file. Currently valid options are binary, xml (default) and stats.
[-v ; --verbose] Print the input and output filenames and pipe output of processor to console as well as specified file. On extremely large files, this may increase processing time by an order of magnitude.
[-f ; --fix-txids] Renumber the transaction IDs in the input, so that there are no gaps or invalid transaction IDs.
[-r ; --recover] When reading binary edit logs, use recovery mode. This will give you the chance to skip corrupt parts of the edit log.
[-h ; --help] Display the tool usage and help information and exit.

案例研究:Hadoop叢集恢復

當Hadoop叢集出現問題,比如edits日誌檔案損壞但還是有部分是正常的。這個時候,我們可以使用該工具將二進位制檔案轉換成xml格式,然後對xml格式進行修改,最終將xml檔案轉回二進位制。如果edits檔案缺少結束標識(以opCode -1結束),工具執行時會意識到這一點,通常格式化也將終止。

如果xml檔案中沒有結束標識,我們可以在最後一個正確的操作記錄後面加上結束標識。任何在“opCode -1”的操作都會被忽略。

結束標識示例(帶有 opCode -1):

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



作者:Kooola大資料
連結:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/854/viewspace-2817363/,如需轉載,請註明出處,否則將追究法律責任。

相關文章