したがって、hdfsの/ var/log/...には、圧縮されていないか、スナッピーで圧縮されたログファイルがたくさんあります。Hadoop HDFSは適切な場所に圧縮します
.snappy
で終了しない場合は、それらを圧縮して、末尾に名前を付けたいと思います。しかし、私はこれをデータの局所性で行いたいと思っています。
私はハープ・ストリーミング・アプローチを試みました。
HAD=/usr/lib/hadoop
$HAD/bin/hadoop jar $HAD/hadoop-streaming.jar \
-D mapred.output.compress=true \
-D madred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec \
-D mapred.reduce.tasks=0 \
-input /var/log/… -output /user/hadoop/working \
-mapper org.apache.hadoop.mapred.lib.IdentityMapper
しかし、それは部分ファイルの束を与え、行ごとにやっているようです。それはまた何らかの理由で収縮を選択しています。だから私はpart-00000.deflate
等のようなファイルを取得します。入力はapp_123456789_0123_1
のようでした。私はapp_123456789_0123_1.snappy
が好きだったでしょうが、その部分は完全なファイルにもマップされていませんでした。また、すばらしいコーデックでもありませんでした。
FAQ saysファイル名の入力ファイルを生成し、各名前でタスクを実行することができます。しかし、単純なスナップ圧縮ツールはありません。もうひとつの選択肢は、それがさらに良くなるように見える(私は瓶を作る必要はないが、私はできると思うが)名前は保存されないと言っている。それは私には役に立たないと思う。
ファイルをHDFSから取得したり、ローカルで作業したり、戻したりすることを含まない方法がありますか?そして、それはファイル名を扱いますか?
これらはスパークログであり、Sparkアプリはログファイルの名前を '.inprogress'完了したら最終的な名前に変更します。私は、圧縮されていない完成したアプリケーションを圧縮することのみを検討していました。ここには複数のユーザーがおり、開発中にログを読みにくくするため、圧縮しない場所で独自のspark configを使用しているユーザーもいます。それから、彼らはそれをそのままにしておきます。私はFlumeを見てみましょう。 – dlamblin