離線編輯檢視器指南

概觀

離線編輯檢視器是解析編輯記錄檔的工具。目前的處理器大多用於不同格式之間的轉換,包括人類可讀且比原生二進位格式更容易編輯的 XML。

該工具可以解析編輯格式 -18(大約是 Hadoop 0.19)和後續版本。該工具僅對檔案執行操作,它不需要 Hadoop 叢集正在執行。

支援的輸入格式

  1. 二進位:Hadoop 內部使用的原生二進位格式
  2. XML:由 XML 處理器產生的 XML 格式,如果檔名有 .xml(不區分大小寫)副檔名,則使用

注意:不允許由相同類型的處理器處理 XML/二進位格式輸入檔。

離線編輯檢視器提供多種輸出處理器(除非另有說明,否則處理器的輸出可以轉回原始編輯檔案)

  1. 二進位: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 檔案重建編輯記錄檔。

統計資料處理器

統計資料處理器用於彙總編輯記錄檔中包含的 op 代碼計數。使用者可以透過 -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

輸出格式為冒號分隔的兩欄表格:OpCode 和 OpCodeCount。每個 OpCode 對應於 NameNode 中的特定操作。

選項

旗標 說明
[-i ; --inputFile] 輸入檔案 指定要處理的輸入編輯記錄檔。Xml(不區分大小寫)副檔名表示 XML 格式,否則假設為二進位格式。必填。
[-o ; --outputFile] 輸出檔案 指定輸出檔名(如果指定的輸出處理器產生一個檔名)。如果指定的檔案已存在,將會在不提示的情況下覆寫。必填。
[-p ; --processor] 處理器 指定要對影像檔案套用的影像處理器。目前有效的選項為 binaryxml(預設值)和 stats
[-v ; --verbose] 列印輸入和輸出檔名,並將處理器的輸出引導至主控台和指定檔案。對於極大的檔案,這可能會將處理時間增加一個數量級。
[-f ; --fix-txids] 重新編號輸入中的交易識別碼,以避免出現間隙或無效的交易識別碼。
[-r ; --recover] 在讀取二進制編輯記錄時,請使用復原模式。這將讓您有機會跳過編輯記錄中已損毀的部分。
[-h ; --help] 顯示工具使用方式和說明資訊,然後結束。

案例研究:Hadoop 群集復原

如果 Hadoop 群集出現問題,且編輯檔案已損毀,則可以儲存至少一部分正確的編輯檔案。這可以透過將二進制編輯轉換為 XML、手動編輯,然後再轉換回二進制來完成。最常見的問題是編輯檔案缺少關閉記錄(具有 opCode -1 的記錄)。工具應能辨識此問題,而 XML 格式應正確關閉。

如果 XML 檔案中沒有關閉記錄,您可以在最後一個正確記錄之後新增一個。opCode -1 記錄之後的所有內容都會被忽略。

關閉記錄範例(具有 opCode -1)

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