bigdata解析を支えるApache Hadoopとは?
1.Hadoopってなにをしてくれるの?
さて、Hadoopって何者なのか?いつも通り、wikipediaさんに聞いてみます。
Apache Hadoopは大規模データの分散処理を支えるオープンソースのソフトウェアフレームワークであり、Javaで書かれている。Hadoopはアプリケーションが数千ノードおよびペタバイト級のデータを処理することを可能としている。HadoopはGoogleのMapReduceおよびGoogle File System(GFS)論文に触発されたものである。
ふむ…。なんかすごそう。
wikiにあるとおり、Googleの技術がもとになっています。
Hadoopのコアなところは「分散処理」というキーワードにあります。
2. 分散処理??
突然ですが、パソコンのデータってどうやって保存されているかご存知でしょうか 。
最近はアーキテクチャがいろいろ変わってきてますが
よくあるパソコンはハードディスクにデータを書き込んで残しています。
最近はSSDが主流で60TBとか大容量のモノもでてきてますね。
そこでですが、ハードディスクに書いているデータを読み取るスピードって意識したことあるでしょうか。
最近のハードディスクは大分性能もよくなってきたとはいえ、
だいたい平均80Mbyte/secくらいと言われています。
さて
「ここでみなさんに10TBのデータを用意しました。データをパソコンに読み込んで、解析して下さい」
と言われたとき、この読み込み速度がネックとなる問題が起きます。
10TBのデータをディスクから読み込むだけで
(10[TB]*1024*1024)/80≒131,072[秒]≒2185[分]≒36.4[時間]
かかってしまうのです。
(実際にはキャッシュなど様々な要因が入るのでこの通りではありませんが…)
さらには、読み込んだとしてもメモリ10TBもあるわけがないので
処理も少しずつ行うしかありません。
これを解決するのが「分散処理」です。
1台で無理なら、1000台にデータばらけさせればいいんじゃね? 的な発想です。
例えば、1000台のパソコン(正確には1000個のハードディスク)に10TBのデータを均等に分けて処理します。
一つのディスク当たり、約10GBまで容量は減り、処理時間も(10[GB]*1024)/80=128[秒]にまで減るわけです。
Hadoopはこの「分散処理」を手伝ってくれます。
いまや日本のデータ通信量は、一日10PBと言われており、このような大量のデータの解析は不可欠な技術となっています。
ちなみに、この手の分散処理、Hadoopが最初かというとそうでもありません。
いわゆる昔からあるスーパーコンピュータと言われるものも、
その多くが分散処理の仕組みで作られています。
ただ、専用にカスタマイズされたコンピュータが必要でした。
Hadoopは専用のコンピュータでなくても、家のmacにだって入れることができます。
その点もよく使われる技術として広まった理由だと思います。
3. Hadoopを扱う会社
というのもざっとHadoopを説明しましたが、実際使おうとするとなかなか複雑で
■Cloudera
Hadoopの生みの親と言われるDoug Cuttingも所属するhadoopベンダです。
#ちなみにhadoopの名前の由来は、Dougさんの娘さんが、持ってた自分のぬいぐるみをhadoopって呼び始めたのが由来らしいです。
自社で独自のオープンソースツールを開発しており、
hadoopだけでは手が届かない範囲のサポートも実施しています。
■ HortonWorks
Yahoo!のHadoopエンジニアが集まって作られた会社です。
感覚的には一番オープンソースを大切にしている会社で、自社独自というより、
世の中のオープンソースを集めて提供&サポートする形をとっています。
MapRはがりがりHadoopをカスタマイズして、使いやすくしたオリジナルHadoopを作り上げて提供しています。オープンソースを企業向けにカスタマイズして提供するのを第一としているイメージです。
4. Hadoopのその先
ざっくりいうと
「Hadoopの分散処理では昨今のリアルタイムな処理に追い付かなくなってきた」
ということが言われています。
このため、後継とも言われるApache Sparkなどの技術が近年のトレンドになっています。このあたり、hadoopを取り巻く環境についてはまだ別の場で書きたいと思います。
ではでは