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

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

@tatsuya6502 そうか、圧縮してもサイズが減らないようなランダムなデータを用意して試せば分かりますね。

2010-08-19 13:05:34
M.Mouri @m_mouri

@tatsuya6502 もちろん、NONE codecを用意するのが正攻法だと思います。ランダムデータは手抜きの方法ですw

2010-08-19 13:06:56
Tatsuya Kawano @tatsuya6502

. @m_mouri さんから、Noneコーデック(何もしない圧縮コーデック)を作って、SequenceFile.Writer/Readerに使わたら、非圧縮のままブロックreadできるのでは、というアイデアをいただきました。ぜひ試したいですね。 #hadoopreading

2010-08-19 13:14:36
M.Mouri @m_mouri

@tatsuya6502 CompressionCodecのAPI Docsを見てみたのですが、None codecの実装は簡単そうです。return in;とreturn out;と書けば済みそう。http://bit.ly/cqSMwx

2010-08-19 15:18:31
Tatsuya Kawano @tatsuya6502

@m_mouri None codec の実装は簡単そうですか。では、週末にやってみますね。

2010-08-19 18:55:45
Tatsuya Kawano @tatsuya6502

SequenceFile.Reader の性能改善として FSDataInputStream のバッファサイズを大きくしましたが、小さいレコードでは大きな効果があるものの、大きなレコードでは10%くらいしか性能が改善されませんでした。 #hadoopreading

2010-08-21 08:32:51
Tatsuya Kawano @tatsuya6502

明日以降は Noneコーデック(何もしない圧縮コーデック)を作って block read を有効にする策を試します。 #hadoopreading

2010-08-21 08:33:53
Tatsuya Kawano @tatsuya6502

#HBase HFile直読みプログラムのソースコードを公開しました。コードを読みたい方は、READMEのSource Tourから始めてください。 http://ow.ly/2sVoI #hadoopreading

2010-08-22 09:39:21
Tatsuya Kawano @tatsuya6502

#HBase HFile 直読みプログラムの最新(8月21日)の測定結果はこちら: http://ow.ly/2sVpj  HDFS SequenceFile.Readerのバッファサイズを増やしましたがあまり性能が改善されませんでした。 #hadoopreading

2010-08-22 09:42:24
M.Mouri @m_mouri

@tatsuya6502 うーん、遅いですね。もっと速くなりそうなものですが。次はBLOCK圧縮を試すのですか?しまった、SequenceFileを読み出してBLOCK圧縮してコピーするソースは会社のPCにしか入ってない。そんなに難しくないですが。

2010-08-22 10:23:51
Tatsuya Kawano @tatsuya6502

@m_mouri はい、次はBLOCK圧縮ですが、1回のテストに3時間ほどかかるので、次の週末までお預けかも。先に HBase への組み込みの話を進めてます。

2010-08-22 10:34:36
M.Mouri @m_mouri

@tatsuya6502 3時間か。それは時間がかかりますね。そうですね、3倍速くなるなら組み込みの方が優先順位は高いですね。

2010-08-22 10:39:38
Tatsuya Kawano @tatsuya6502

ソースにはHDFS SeqFileの性能テストも含まれてます。遅い原因についての突っ込みとヘルプ歓迎します!RT: #HBase HFile直読みのソースコード。READMEのSource Tourから始めて http://ow.ly/2sVoI #hadoopreading

2010-08-22 10:42:27
M.Mouri @m_mouri

@tatsuya6502 さんが忙しそうなので、代わりといってはなんですが、SeqFileをBlock圧縮してコピーするコードとNoneコーディックを書いてみようかと思っているのですが、書いたらtatsuyaさんの方でベンチマークを取ってもらえますか?

2010-08-22 15:56:57
Tatsuya Kawano @tatsuya6502

@m_mouri そうしていただけると助かります。もちろん、ベンチマークはこちらでとります。QT: SeqFileをBlock圧縮してコピーするコードとNoneコーディックを書いてみようかと思っているのですが、書いたらtatsuyaさんの方でベンチマークを取ってもらえますか?

2010-08-22 19:48:13
御徒町@Serializable @okachimachiorz

@tatsuya6502 う~。これ対象データって1Gで20万件程度かな?100倍ぐらいのもの+最低でも5ノード程度でやらないと、HDFS的にはちょっと。もともと細切れのデータですよね?それでも50M近くでているんで、HDFS的にはそんなもんかと。通常だと普通に100Mでます。

2010-08-22 20:36:18
M.Mouri @m_mouri

@okachimachiorz @tatsuya6502 細切れのデータでスループットが出ないとすると、ボトルネックはCPUになると思うのですが、使っているのが4CoreのCPUなのでちょっと僕には考えにくいです。topでcpu,sys,idle,waitを見るとなにか分かるかも

2010-08-22 22:16:07
御徒町@Serializable @okachimachiorz

sarとかでいんじゃね。えっと、単純にIOボトルネックじゃないかね?細切れだとIOが結構発生するって話。 @m_mouri @tatsuya6502 細切れのデータでスループットが出ないとすると、・・topでcpu,sys,idle,waitを見るとなにか分かるかも

2010-08-22 23:15:45
M.Mouri @m_mouri

@okachimachiorz ファイルが細切れだとIOがボトルネックだと思いますが、SeqFileはファイル自体は細切れではありません。データが細切れでもファイルはHDFSのブロックサイズを超えた大きなものになります。

2010-08-22 23:49:59
御徒町@Serializable @okachimachiorz

@m_mouri あぁ、気になっているのは、このテスト用のSeqFileってのがどんな感じなのかな、と思って。HBaseの方がよくわからんであれだけど。普通のSeqFileなのかね?だとすれば上位のボトルネックだけど。HBaseと比較で有る以上同じデータじゃないと意味ないでほ。

2010-08-22 23:59:10
御徒町@Serializable @okachimachiorz

@m_mouri さんの方のHDFSでのスループットってどんなものかね?こっちは、(もちろん処理にもよるけど)100Mは大抵出てるし、想定してる感じだけど・・その感覚で50Mっていうと、「あー半分だわね。なんかチガウ」ってのが第一印象です。

2010-08-23 00:02:04
M.Mouri @m_mouri

@okachimachiorz なるほど、SeqFileが細切れの可能性もあると。でも、HDFSのブロックサイズが64Mbyteなのでそこに細切れのSeqFileを詰め込むととんでもなくディスクスペースを食ってしまいますね。HFileは複数のデータをまとめた構造なので、

2010-08-23 00:05:16
M.Mouri @m_mouri

@okachimachiorz ひょっとしたら、SeqFileも細切れの可能性がありますね。

2010-08-23 00:05:45
御徒町@Serializable @okachimachiorz

@m_mouri うん。その可能性あるかな~、と思って。HBaseでアクセスするなんか途中で、なんかゴニャゴニャやっちまって、SeqFileの「皮かぶせて」読み込んでないかなとおもったりして。

2010-08-23 00:09:48
M.Mouri @m_mouri

@okachimachiorz HDFSのスループットはちゃんと計ったことはないですが、Block圧縮を入れた状態で今計算してみると、34Mとでました。あれ?遅すぎる。明日RowCountを走らせて調べてみます。

2010-08-23 00:10:18
前へ 1 2 ・・ 5 次へ