狠狠撸

狠狠撸Share a Scribd company logo
Hadoop splittable-lzo-compression
の設定と評価
自己紹介????佐藤 大樹(dandaso)
2003~2006?(株)ドワンゴ
2006~2008?ウノウ(株)
2009~????(株)スペイジーズ
?
自己紹介????佐藤 大樹(dandaso)
2003~2006?(株)ドワンゴ
2006~2008?ウノウ(株)
2009~????(株)スペイジーズ
?
 スペイシーズは人財を募集しております
 ??確率分布、統計、検定などの基礎知識
 ??回帰分析などの統計分析手法の知識
 ??パターンマイニング、分類器、
 ??クラスタリングなどの機械学習の知識
大規模データ向けのバッチ分散処理システム

File          File       File        File
                                      Namenode
                HDFS                  DataNode

                                      JobTrcker
 MAP       MAP       MAP       MAP
                                     TaskTracker
       Reduce         Reduce


        Out            Out
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
Hadoopを利用する利点
?フレームワーク(MapReduce)に沿って
?プログラムを書ばバッチ処理を分散処理を
?してくれる
?ノードを増やせばスケールする
欠点
?起動のオーバーヘッドが大きため、
?リアルタイム性を求める処理には向かない
贬补诲辞辞辫で扱える圧缩形式

                               複数    スプリッ
圧縮形式   ツール    アルゴリズム   拡張子
                              ファイル    タブル

gzip   gzip   de?ate   .gz    不可     不可
                                     ファイル
 ZIP   zip    de?ate   .zip   可能      単位

bzip bzip2 bzip2 .bz2         不可     可能

 LZO   lzop   LZO      .lzo   不可     不可
贬补诲辞辞辫で扱える圧缩形式

                               複数    スプリッ
圧縮形式   ツール    アルゴリズム   拡張子
                              ファイル    タブル

gzip   gzip   de?ate   .gz    不可     不可
                                     ファイル
 ZIP   zip        .zip
              de?ate          可能      単位
              可能に!
bzip bzip2 bzip2 .bz2         不可     可能

 LZO   lzop   LZO      .lzo   不可     不可
2.1骋の础辫补肠丑别のアクセスログ

     圧縮時間 圧縮速度 サイズ 解凍時間 解凍速度
圧縮形式                                     サイズ比
     (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
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
圧縮してMapReduceを行う利点と欠点
利点
??ディスク容量の節約
??ネットワーク帯域の節約
欠点
??CPUを使う
??ログファイルをすぐに閲覧できない
贬顿贵厂上ファイルをコピー
                       secondary
 namenode              namenode



tasktracker1   2   3      4
贬顿贵厂上ファイルをコピー
                       secondary
 namenode              namenode



tasktracker1   2   3      4
贬顿贵厂上ファイルをコピー
                       secondary
 namenode              namenode



tasktracker1   2   3      4
贬顿贵厂上ファイルをコピー
                       secondary
 namenode              namenode



tasktracker1   2   3      4
贬顿贵厂上ファイルをコピー
                       secondary
 namenode              namenode



tasktracker1   2   3      4
贬顿贵厂上ファイルをコピー
                       secondary
 namenode              namenode



tasktracker1   2   3      4
贬顿贵厂上ファイルをコピー
                       secondary
 namenode              namenode



tasktracker1   2   3      4
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
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
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
Hadoopの設定 (4)              ソースコード
import com.hadoop.mapreduce.LzoTextInputFormat
public class Test extends Con?gured 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);
}
テストと評価 (1) テスト環境
TaskTrackerの環境
CentOS 5.4
Cloudera CDH2
XeonL5520 x1(8 thread)
Memory 16GByte
?を4台?で 2GByteのログを4つCount
mapred.tasktracker.map.tasks.maximum => 8
テストと評価 (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/
テストと評価 (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/
テストと評価 (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
テストと評価 (4)
eth1 tra?c bit/sec
                     bzip
                     gzip
                     lzo
                     圧縮なし
まとめ
HadoopLzo
?HDFSの容量を節約できる
?帯域を圧縮し、処理時間を短縮できる


Hadoop 0.20.xでは特別な理由が無い限り
利用したい

More Related Content

Hadoop splittable-lzo-compression

Editor's Notes