Taste of Tech Topics

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

Hadoop × リアルタイムストリーミング= Storm?

こんばんは、kimukimuです。

今日はいつものAndroidではなくて、Hadoopで最近調べていることを書きます!

1. 最近Hadoopは熱いんです!

最近、Hadoopを用いたビジネスがひたすら熱いです。

『Big Data』を扱う新たな情報分析プラットフォームとして、
破壊的なまでの広がりを見せています。

これまで1日かかっていたデータの集計が、
15分で出来るようになり、より素早い意思決定が可能になる。。。。
それを特別なハードは使わず、マシンを束ねてやってのけるというのはすごいですよね。

2〜3年前にAmazon Elastic MapReduceが登場したころに弄ってみて、
価値が理解できずに投げ出した過去の自分を蹴り飛ばしたいくらいに。

しかも、ついこの間次世代MapReduce(Hadoop-0.23)も発表されて、さらに勢いが増しています。
ただ、これはどうやら現在のHadoopの真っ当な後継のようです。

なので、Hadoop-0.23も気になりますが、
今日はちょっと変わり種の「Storm」について書いてみます。

2. Stormって?

Stormと聞くと、まず浮かぶのは下の画像のような光景ですよね。

どうやらStormは嵐を呼ぶプロダクトのようです。 ・・・冗談ですよ、冗談。

Stormとは、Hadoopのような分散並列処理を常時実施し、
結果をストリーミングのような形で随時発行可能なOSSです。

有名どころでいえば、Twitterのバックグラウンドで使用されているようです。
元はTwitterが買収したBackTypeの技術です。

3.Stormの特徴は?

特徴としては、
「Hadoopと同じ分散並列処理をデータがある限り延々と続け、終わった分だけ結果を生成し続けることができる」
のようです。

HadoopはMapReduceJob(MapタスクとReduceタスクからなる)という形で、1回実行したら基本処理は終わりです。

対して、Stormは下記の2つの要素から成り立っており、
『流し込むデータが存在する限り』継続して処理し、リアルタイムに結果を生成できます。

  1. Storm : 変換するためのデータを流し込む処理
  2. Bolt : データの変換処理(Boltを複数経由させることで、複雑なデータ処理も可能)

常に処理するデータがあるという前提で、
処理&結果算出を常時行うことができます。

4.Hadoopと比べてどんなアプリケーション/システムに向いているの?

これは個人的な意見になりますが、下記のような住み分けなのかな、と考えています。

  • Hadoop

統計、集計といった、
『データを全て読んで、結果を生成する』必要があるアプリケーション。

  • Storm

データ加工、変換といった、
『その時点のデータを読んで、結果を生成すれば済む』アプリケーション

・・・なんですが、実はこのStorm、まだ全然詳細は発表されていません。

来月の9月18日に「Strange Loop」というイベントがあり、
そこで初めてソースコード公開と新規機能発表がされるようです。

今スグにどうこうというわけではなさそうですが、
今後リアルタイムなアプリケーションを作るときは参考になりそうですね!