PFIにインターンに行ってきました。

……もう1月以上前のできことなんですがね。


夏休みのGoogleインターンに続き(?)、春休みはPreferred Infrastructure(PFI)さんにお邪魔してきました。
誘ってくれた@suma90h君と、お世話になったPFIの皆様に感謝です!
期間は3月いっぱい、3/1 - 3/31の一ヶ月。
M1の3月と言えば就活開始時期ですが、なんのそので行ってきました。


で、何やってきたかと併せてなんか技術的なあれこれもまとめてエントリにしようかな、とか思ったのだけれど、そんなことしてるといつまでたっても書き終わらないので、技術的なことはともかくPFIインターンで何やってきたかなぞをだらだらと。


インターン初日こと3/1はMongoDBのカンファレンスMongoTokyo 2011の開催日で、ちょうど太田さんの発表があるということで見に行ってきました。
ちょうどそのときの資料がPreferred Researchブログに載っていたので(http://research.preferred.jp/2011/03/mongotokyo_2011_presentation/)、この辺を参考にしつつ、インターンの内容をば。


検索エンジンSedueについては、先のスライドの10枚目あたりを読んでいただくとして、スライド25枚目の美麗なイラスト。Sedueのアーキテクチャについて。
Sedueは複数のサーバ群の上で動いており、ユーザからのクエリを受け付けるQuery Serverや検索を行うSearcher、Searcherの使うインデックスを作るIndexerに文章の登録管理をするDocument Repository、といった感じになっています。
さて、このSedueのバックエンドデータベースにMongoDBが使われている、というのは先のリンクの通りですが、今回のインターンプログラムとしてDocument RepositoryにHBaseサポートを加えてきました!


HBaseはHadoopプロダクトの一部で、GoogleBigTableを元に作られた分散データベースです。
その特徴はなんと言ってもHadoopプロダクトにあるまじきロゴのかっこよさ*1、じゃなくって、自動シャーディングなどの大規模データの取り扱い。
現在のところMongoDBをメインのバックエンドデータベースに使っているので、うちの書いたコードは実運用ではたぶん使われないと思いますが、大規模データの取り扱いが必要になってくればそのうち……?


ベンチマークでは現在のMongoDBの実装にはかなわず。
実装が悪かった、という可能性はなきにしもだけれどもThriftのオーバーヘッドとか、そもそものHBaseとMongoDBの速度差もあるのやも。
というか、もちっとしっかりベンチすればよかったかも、と今更ながら。


そんなこんなで、MongoTokyo行ったり、Bull飲んだり、地震にあってみたり、Bull飲んでみたり、つけ麺食べてみたり、インドカレー食べてみたりの一ヶ月でした。
食べ物の話ばかりなのは内緒さ!


そのうち*2HadoopのインストールとかHBaseをいじってみたりとか、そういうエントリを書いていきたいなと思ってます。
HBaseのというか、Thriftに苦戦したこととか、ノウハウ(?)とか、定番だけどTwitterクローラ回してHBaseに格納してみたり全文検索してみたりとか。
あ、あとインターン終了直前にPigからHBaseを叩いてみようとして、時間切れしたのでそのうちリベンジも。
日本語情報が皆無なので苦戦しそうだけど……。HBaseStorageから読み込みはいけたんだけどなぁ……。ううむ。
HBaseならまかせろーバリバリー、とか言えるようになりたいですなぁ。
いつになることやら。


そんなわけで今回はここまで。
あらためてPFIの皆様に感謝!

*1:こんなまとめが…。 http://d.hatena.ne.jp/kkawamura/20100130/1264864342

*2:もしかして: never