HDFSのappend機能を使った場合の編集ログ

編集ログとHDFSの追記

以前、HDFSのfsimageとeditsの変更 | Tech Blogに書いたように、HDFSのeditsにはトランザクションが記録されます。
HDFSのappend(追記)機能を使って書き込んだ場合、editsの内容はどのように見えるのでしょうか?

のコードを利用させていただき検証しました。

サンプルコードの準備

上記のコードをコピーしてJavaのファイルを作成します。(ただ、パッケージ行のみコメントアウトしました)

Avroの準備

コードで使用しているFsInputはCDH4には含まれていないようなので、http://avro.apache.org/からソース一式をダウンロードします。

$ wget http://ftp.tsukuba.wide.ad.jp/software/apache/avro/stable/avro-src-1.7.4.tar.gz
$ tar xvf avro-src-1.7.4.tar.gz
$ cd avro-src-1.7.4
$ mvn package
$ javac -cp `hadoop classpath`:/home/training/work/avro-src-1.7.4/lang/java/mapred/target/avro-mapred-1.7.4.jar DFWAppendTest.java
$ java -cp `hadoop classpath`:/home/training/work/avro-src-1.7.4/lang/java/mapred/target/avro-mapred-1.7.4.jar:. DFWAppendTest
$

確認

hdfsのoevツールで表示します。
sudo -u hdfs hdfs oev -i /var/lib/hadoop-hdfs/cache/hdfs/dfs/name/current/edits_inprogress_0000000000000023404 -o /tmp/kawa2
下記の出力結果が追記に該当する部分です「OP_UPDATE_BLOCKS」というイベントが追記に関連しています。
(略)
[code]

OP_ADD

23669
0 /sample.avro 1
1365156852421
1365156852421
67108864
DFSClient_NONMAPREDUCE_-1396319943_1
127.0.0.1

4713309346536973752
168
6621
training
supergroup
420



OP_SET_GENSTAMP

23670
6622



OP_UPDATE_BLOCKS

23671 /sample.avro
4713309346536973752
168
6622




OP_CLOSE

23672
0 /sample.avro 1
1365156852491
1365156852421
67108864



4713309346536973752
168
6622
training
supergroup
420

[/code]