More Related Content
Similar to Hadoop splittable-lzo-compression (20)
Hadoop splittable-lzo-compression
- 4. 大規模データ向けのバッチ分散処理システム
File File File File
Namenode
HDFS DataNode
JobTrcker
MAP MAP MAP MAP
TaskTracker
Reduce Reduce
Out Out
- 5. WordCount
INPUT MAP SHUFFLE REDUCE
CAT DOG CAT 1 CAT 1
ELEPHANT DOG 1 CAT 1
CAT 4
ELEPHANT 1 CAT 1
CAT 1 ELEPHANT 1
CAT DOG CAT 1
RABIT RABIT 1 ELEPHANT 1 DOG 1
DOG 1 RABIT 2
CAT 1
CAT CAT
CAT 1 RABIT 1
RABIT
RABIT 1 RABIT 1
- 7. Hadoopで扱える圧縮形式
複数 スプリッ
圧縮形式 ツール アルゴリズム 拡張子
ファイル タブル
gzip gzip deflate .gz 不可 不可
ファイル
ZIP zip deflate .zip 可能 単位
bzip bzip2 bzip2 .bz2 不可 可能
LZO lzop LZO .lzo 不可 不可
- 8. Hadoopで扱える圧縮形式
複数 スプリッ
圧縮形式 ツール アルゴリズム 拡張子
ファイル タブル
gzip gzip deflate .gz 不可 不可
ファイル
ZIP zip .zip
deflate 可能 単位
可能に!
bzip bzip2 bzip2 .bz2 不可 可能
LZO lzop LZO .lzo 不可 不可
- 9. 2.1GのApacheのアクセスログ
圧縮時間 圧縮速度 サイズ 解凍時間 解凍速度
圧縮形式 サイズ比
(sec) (M/sec) (MByte) (sec) (M/sec)
gzip 56 38.4 291 15 143 1/7
bzip 825 2.6 192 78 27.5 1/11
1/4.
lzo 12 179 475 5.6 379
5
- 10. lzopの圧縮レベルについて
2.1Gのログを圧縮
圧縮時間 サイズ 解凍時間
圧縮レベル
(sec) (M byte) (sec)
1 14.1 532 8.6
3 14.3 528 8.5
6 104 519 8.5
9 186 517 8.6
- 19. Hadoopの設定 (1)
Hadoopをインストール
$ sudo curl http://archive.cloudera.com/redhat/
cdh/cloudera-cdh2.repo > /etc/yum.repos.d/
cloudera-cdh2.repo
$ yum -y update yum
$ sudo yum -y install hadoop-0.20-conf-pseudo
Hadoopを設定
vi /etc/hadoop-0.20/masters
vi /etc/hadoop-0.20/slaves
vi /etc/hadoop-0.20/core-site.xml
vi /etc/hadoop-0.20/hdfs-site.xml
vi /etc/hadoop-0.20/mapred-site.xml
- 20. Hadoopの設定 (2)
/etc/hadoop-0.20/core-site.xml
・io.compression.codec.lzo.class
com.hadoop.compression.lzo.LzoCodec
・io.compression.codecs
org.apache.hadoop.io.compress.GzipCodec,
org.apache.hadoop.io.compress.DefaultCodec,
com.hadoop.compression.lzo.LzoCodec,
com.hadoop.compression.lzo.LzopCodec,
org.apache.hadoop.io.compress.BZip2Codec
/etc/hadoop-0.20/core-mapred.xml
・mapred.map.output.compression.codec
com.hadoop.compression.lzo.LzoCodec
- 21. Hadoopの設定 (3) Hadoopを設定(LZO部分)
$yum install -y lzo-devel lzop
$git clone git://github.com/kevinweil/hadoop-lzo.git
$ant compile-native tar
$cp build/hadoop-lzo-0.4.4.jar /usr/lib/hadoop/lib/
$mkdir -p /usr/lib/hadoop/lib/native/Linux-amd64-64
$tar -cBf - -C build/hadoop-lzo-0.4.4/lib/native . ¦
sudo tar -xBvf - -C /usr/lib/hadoop/lib/native/Linux-
amd64-64
- 22. Hadoopの設定 (4) ソースコード
import com.hadoop.mapreduce.LzoTextInputFormat
public class Test extends Configured implements Tool {
...
public int run(String[] args) throws Exception {
....
// input formatにLzoを利用
conf.setInputFormat.(LzoTextInputFormat.class)
// 出力データにLzoを利用
FileOutputFormat.setOutputCompressorClass
(conf,com.hadoop.compression.lzo.LzopCodec.class);
FileOutputFormat.setCompressOutput(conf, true);
}
- 24. テストと評価 (2) lzo インデックスの作成
hadoop dfs -ls /user/hadoop/test/
2010-09-28 15:03 /user/hadoop/test/log1.lzo
2010-09-28 15:06 /user/hadoop/test/log2.lzo
2010-09-28 15:08 /user/hadoop/test/log3.lzo
2010-09-28 15:10 /user/hadoop/test/log4.lzo
hadoop jar /usr/lib/hadoop/lib/hadoop-lzo-0.4.4.jar
com.hadoop.compression.lzo.LzoIndexer test/
MapReduceでインデックスを付ける場合には
hadoop jar /usr/lib/hadoop/lib/hadoop-lzo-0.4.4.jar
com.hadoop.compression.lzo.DistributedLzoIndexer
test/
- 25. テストと評価 (3) lzo インデックスの作成
hadoop dfs -ls /user/hadoop/test/
2010-09-28 15:03 /user/hadoop/test/log1.lzo
2010-09-28 15:30 /user/hadoop/test/log1.lzo.index
2010-09-28 15:06 /user/hadoop/test/log2.lzo
2010-09-28 15:30 /user/hadoop/test/log2.lzo.index
2010-09-28 15:08 /user/hadoop/test/log3.lzo
2010-09-28 15:30 /user/hadoop/test/log3.lzo.index
2010-09-28 15:10 /user/hadoop/test/log4.lzo
2010-09-28 15:30 /user/hadoop/test/log4.lzo.index
ログ集計を実行
hadoop dfs jar logcount.jar jar logcount -m 24 -r 8
test/ testoutput/
- 26. テストと評価 (4)
入力ファイル MapReduce
MapTaskの数
サイズ 実行時間
圧縮なし 127 8G 2:25
gzip 4 1.2G 6:29
bzip 24 0.87G 2:09
lzo 28 1.7G 2:11
*Map input records はすべて 11,845,446
Editor's Notes
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n