読者です 読者をやめる 読者になる 読者になる

Taste of Tech Topics

Acroquest Technology株式会社のエンジニアが書く技術ブログ

Hadoopソースコードリーディング第8回に参加しました

Hadoop

Hadoopソースコードリーディング第8回に参加しました。
会場提供、準備等、@hamakenさんを始め、
NTTデータの方々ありがとうございました。

以下、報告です。

(1)『オレオレMultipleInputを作る方法(仮)』
  - @muddydixon さん
(2)『MapRってどうよ? - 実際に使ってみた感触を紹介します』
  - リクルート 中野さん、高林さん、大坪さん

(1)『オレオレMultipleInputを作る方法(仮)』

発表資料が公開されています
http://www.slideshare.net/muddydixon/multipleinput

HadoopのMultipuleInputs を自作して、
Hadoopからmongodbを使えるようにした、という発表です。

HadoopのMultipulInputsは、
MapReduceジョブのinputを柔軟に指定して、

・異なる形式のデータを同一ジョブで扱う
 →Textファイル、Sequenceファイルなど
・ファイルごとに違うMapperを割り当てる
 →「元データはこのMapper」「差分データはこのMapper」など、振り分ける

といったことができるようにするものです。
@muddydixon さんが作ったMongoMultipleInputs によって、
mongodbのデータを入力として扱うことができます。
(分散環境に振り分けられたチャンクデータのローカリティには対応していない)

会の中で最も話題になったのは、
org.apache.hadoop.mapreduce.lib.input.TaggedInputSplitGenerator
がなぜpublicなクラスでないのか?
と言う話でした。
ソースコードリーディング」の名にふさわしいコアな内容だった感じがします。
mongodbをよく知らない私にはきつかった(^^;

参考:TaggedInputSplit が public でなくなった原因のパッチ。
https://issues.apache.org/jira/browse/HADOOP-3853

(2)『MapRってどうよ? - 実際に使ってみた感触を紹介します』

Recruit の検証内容の発表でした。

最初に、@nagixさんから「MapRとは」の説明でした。
内容は、多分ここで私が説明するより、@nagixさんの記事を見てもらった方が早いです。
参考:草薙さんの記事「インサイド MapR (1) 」
http://d.hatena.ne.jp/nagixx/20111216/1324006829

その後は、
高林さんによるHiveを使った性能検証の結果発表、
大坪さん(NSSOL)によるマルチテナント向け機能検証発表、
高林さんによるまとめ(!)
と続きました。

Hiveを使った性能検証の結果

2倍、3倍の性能というが、Hiveを用いた集計で、
 パーティション・圧縮で1.3倍、
 非パーティション・非圧縮非で1.76倍
の性能が出た。そこまでではない?
 

マルチテナント向け機能検証

1. 権限
Jobの実行権限等をつけられるかと思ったら、そうではなかった、とのことでした。
Cluster Permission, Volume Permission はカスタマイズできますが、
Jobの実行権限等を設定しようと思ったら、
Hadoopでやっていたのと同じことをする必要があります。

2. ジョブの同時実行
FairSchedulerが標準で使えます。
Map Slot数だけでなく、Prefetch Slot数の設定も可能。
ジョブの同時実行のパターンを、
最大Slot数、最小Slot数を指定したいくつかのパターンで試し、
うまい具合に割り振られている事を確認。
課金にも重要なこの機能がうまく動いていて、これは使えそう。

3. Load, Job実行
台数増加でうまくスケールしていることを確認。
また、
Master, Slaveを区別しないクラスタ構成(全8ノードにCLDBを乗せる)で、
変わらぬ性能が出ていたため、
Master, Slaveのノードを区別しない、効率的な運用が可能では、という期待。

EMCが3台にCLDBを乗せるパターンしかサポートしないと言っているのが難点か。

4. Direct NFS
MapRの機能で、
クライアント側にNFSマウントすることができます。

そうすると、
・サーバ側にデータを送る前にクライアント側で必要な圧縮が行える
・サーバ側のNICが複数枚ある場合全てを使って通信する事ができる
の2点より、データロードが高速化します。
ただし、
クライアント側に入れる場合もライセンス費用が発生するので注意が必要です。

高林さんによるまとめ

データさんのサポートのあるCDHは安心。
MapRはサポート面が心配。


CDH vs MapR の、
会場の雰囲気をいまいち伝えきれないところが残念です。