HBaseのHFile直読みとHDFSのReaderの速度比較

@tatsuya6502さんが『Hadoopソースコードリーディング第4回』で発表された、HadoopのMapReduceのReaderにおいて「HBaseのHFileを直接読み込む」のと「HDFSから読み込む」場合との速度の比較について のその後
1
Tatsuya Kawano @tatsuya6502

今晩の Hadoop ソースコードリーディングで #HBase 入門(第3回)の発表をします。発表用スライドのダウンロードはこちらから: http://bit.ly/aTHMzu (PDF 7.6MB) #hadoopreading

2010-08-17 07:04:41
M.Mouri @m_mouri

@tatsuya6502 今日のHadoopReadingの資料について素朴な質問です。HBaseはLZO圧縮が入っていると思うのですが、HDFSもLZO圧縮してこの速度だったのでしょうか???

2010-08-17 13:46:56
Tatsuya Kawano @tatsuya6502

@m_mouri 資料に載せたのは、HDFS、HBase 共に圧縮なしのときの結果です。HBase 側は lzo ありも測定したのですが、資料からは省略しました。ちなみに、HDFSは SequenceFile を使いました。

2010-08-17 18:31:14
M.Mouri @m_mouri

@tatsuya6502 ありがとうございます!僕の経験よりもHBaseの動作がずいぶんと速い感じです。

2010-08-17 18:38:14
Tatsuya Kawano @tatsuya6502

Hadoop ソースコードリーディングで #HBase 入門(第3回)の発表をします。発表用スライドのダウンロードはこちらから: http://bit.ly/aTHMzu (PDF 7.6MB) #hadoopreading

2010-08-17 18:45:02
Tatsuya Kawano @tatsuya6502

HFileとHDFSの速度比較ですが、HDFSが遅い?については調査してみます。一度に読み込むバイト数が違うのかも。 #hadoopreading

2010-08-17 21:46:16
Tatsuya Kawano @tatsuya6502

HFile 側は、HFile.Reader を使っていて、これは FSDataInputStreamから、約64KBのデータブロックを readFullyでまとめて読んでます。 #hadoopreading

2010-08-17 21:47:08
Tatsuya Kawano @tatsuya6502

HDFS側は SequenceFile scanner を使いました。ディフォルト設定だったので、一度に読み込むバイト数が HFile.Reader に比べて少なかったのかも。 #hadoopreading

2010-08-17 21:47:45
御徒町@Serializable @okachimachiorz

どうみても有りますね。RT @yutuki_r: HDFSって結構色々やってるけど、まだまだ高速化の余地あるんかな #hadoopreading

2010-08-17 21:57:27
御徒町@Serializable @okachimachiorz

それは遅いと思う。RT @tatsuya6502: HDFS側は SequenceFile scanner を使いました。ディフォルト設定だったので、一度に読み込むバイト数が HFile.Reader に比べて少なかったのかも。 #hadoopreading

2010-08-17 21:57:47
Tatsuya Kawano @tatsuya6502

HDFS SequenceFile.Reader の readバッファーサイズは、ディフォルトで 4KB のようです。 http://ow.ly/2qZyX  これが原因かな。64KB に変えて HFile 直読みと比較し直してみます。 #hadoopreading

2010-08-18 06:47:53
御徒町@Serializable @okachimachiorz

@tatsuya6502 さすがに4KBでは比較にならんかと思われ。 #hadoopreading

2010-08-18 08:47:13
M.Mouri @m_mouri

@tatsuya6502 そういえば、m1.xlargeのインスタンスのディスクI/Oスループットは197.14MB/sec出るそうです。http://bit.ly/98jez7なので、SequenceFileもこの程度出てもおかしくないと思うんですよね。

2010-08-18 09:47:14
Tatsuya Kawano @tatsuya6502

ですね... まさかデータより小さいとは。バッファサイズを64KBから増やしていって、8,000バイトのデータでどこまで伸びるかやってみます。RT @okachimachiorz: @tatsuya6502 さすがに4KBでは比較にならんかと思われ。 #hadoopreading

2010-08-18 09:52:51
Tatsuya Kawano @tatsuya6502

おお、それは参考になります。もう少し試してみます。QT @m_mouri: @tatsuya6502 m1.xlargeのディスクI/Oスループットは197.14MB/sec出るそうです。http://bit.ly/98jez7なので、SequenceFileもこの程度出ても

2010-08-18 10:27:20
Tatsuya Kawano @tatsuya6502

#hadoopreading HDFSのreadが HFile直読みV2より遅かった件、再テストは週末になりそう。いま想像している理由は、HFile.ReaderがFSDataInputStreamから約64KBのブロック単位でreadしていることに対して、

2010-08-19 12:18:19
Tatsuya Kawano @tatsuya6502

SequenceFile.Reader では、FSDataInputStreamから1行単位(僕のテストでは 500バイト〜8000バイト)でreadしていること。read回数の多い後者が遅くなる。 #hadoopreading

2010-08-19 12:19:28
Tatsuya Kawano @tatsuya6502

解決策の1つは、FSDataInputStreamのバッファサイズを大きくすること。SequenceFile.Readerからのread回数は減らせないが、Data Nodeとの通信回数は減らせるので、高速化が期待できる。 #hadoopreading

2010-08-19 12:20:26
Tatsuya Kawano @tatsuya6502

もうひとつの解決策は、SequenceFile.Readerのブロック圧縮を有効にすること。これにより、SequenceFile.ReaderがFSDataInputStreamから約100KBのブロック単位でreadするようになる。 #hadoopreading

2010-08-19 12:21:51
Tatsuya Kawano @tatsuya6502

週末のテストが楽しみ。納得できる結果が得られたら、 HBase 開発チームに連絡して、 今回作ったプログラムの組み込み方法を検討しよう。 #hadoopreading

2010-08-19 12:23:16
M.Mouri @m_mouri

@tatsuya6502 SequenceFileのブロック圧縮を有効にすると妙に速くて関心したのですが、まさか読み込むブロックサイズが変化していたとは想像できませんでした。えー!

2010-08-19 12:31:53
Tatsuya Kawano @tatsuya6502

@m_mouri SequenceFileでは圧縮を有効にすると速くなるんですか。予想通りだ。ちなみに HFileで圧縮を有効にすると10〜20%遅くなりました。SequenceFileでは圧縮のデメリットよりも、ブロック単位のreadで高速化するメリットの方が大きいのかと。

2010-08-19 12:49:41
M.Mouri @m_mouri

@tatsuya6502 圧縮すると速いです。ただ、gzip圧縮は経験的にテキストだと1/5ぐらいになるので、てっきりボトルネックがDisk I/OからCPUに移動したと思い込んでました。BLOCK圧縮をONにして、codecをNONEにできると原因がはっきりしそうですが、

2010-08-19 12:57:19
M.Mouri @m_mouri

@tatsuya6502 クラスが用意されていないので、試すなら自分でorg.apache.hadoop.io.compress.CompressionCodecを実装する必要がありそうです。

2010-08-19 12:59:43
Tatsuya Kawano @tatsuya6502

@m_mouri なるほど!い い考えですね。何もしないコーデックを使うのが実は最高性能をだしそうです。RT: クラスが用意されていないので、試すなら自分でorg.apache.hadoop.io.compress.CompressionCodecを実装する必要がありそうです

2010-08-19 13:04:57
1 ・・ 5 次へ