離線編輯檢視器是解析編輯記錄檔的工具。目前的處理器大多用於不同格式之間的轉換,包括人類可讀且比原生二進位格式更容易編輯的 XML。
該工具可以解析編輯格式 -18(大約是 Hadoop 0.19)和後續版本。該工具僅對檔案執行操作,它不需要 Hadoop 叢集正在執行。
支援的輸入格式
.xml
(不區分大小寫)副檔名,則使用注意:不允許由相同類型的處理器處理 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 ] 處理器 |
指定要對影像檔案套用的影像處理器。目前有效的選項為 binary 、xml (預設值)和 stats 。 |
[-v ; --verbose ] |
列印輸入和輸出檔名,並將處理器的輸出引導至主控台和指定檔案。對於極大的檔案,這可能會將處理時間增加一個數量級。 |
[-f ; --fix-txids ] |
重新編號輸入中的交易識別碼,以避免出現間隙或無效的交易識別碼。 |
[-r ; --recover ] |
在讀取二進制編輯記錄時,請使用復原模式。這將讓您有機會跳過編輯記錄中已損毀的部分。 |
[-h ; --help ] |
顯示工具使用方式和說明資訊,然後結束。 |
如果 Hadoop 群集出現問題,且編輯檔案已損毀,則可以儲存至少一部分正確的編輯檔案。這可以透過將二進制編輯轉換為 XML、手動編輯,然後再轉換回二進制來完成。最常見的問題是編輯檔案缺少關閉記錄(具有 opCode -1 的記錄)。工具應能辨識此問題,而 XML 格式應正確關閉。
如果 XML 檔案中沒有關閉記錄,您可以在最後一個正確記錄之後新增一個。opCode -1 記錄之後的所有內容都會被忽略。
關閉記錄範例(具有 opCode -1)
<RECORD> <OPCODE>-1</OPCODE> <DATA> </DATA> </RECORD>