2010/06/23

BIGDATAを処理する技術


 さて、このBIGDATA処理にはどんな技術が用いられているのでしょうか。

 先にご紹介したTwitter開発者向けのChirpのプレゼン資料に戻ると、このBIGDATAをストレージ(格納)するためには、単体のマシーンを使い、そのHDの書き込みスピードが80MB/秒だとした場合に、24.3時間かかると試算しています。

 つまり、単体のマシーンでこのBIGDATAを高速で処理するとなると、相当にハイグレードなコンピューターが必要となります。予算に糸目をつけないというのであれば、CPUを高速化し、メモリを増設し、ストレージを大容量化するという、「スケールアップ」を選択しても良いでしょう。




 しかし、こんなBIGDATAを扱うビジネスは、その大半がクリス・アンダーセンの著書「Free」で指摘されているように、5%の有料ユーザーが残りの95%の無料ユーザーを支えるといった新しいビジネスモデルにより成り立っています。

 そうなると、低コストでの事業運営が求められます。そこで、最近では5000ドル(約50万円)PCサーバーと呼ばれる汎用PCサーバーを多数、分散、並列して規模を拡大する、「スケールアウト」が注目を集めています。

 このスケールアウトでは、通常、分散、並列したPCサーバを同時に稼働させて分散処理を行います。この分散処理は簡単に説明すると、この図のようになります。




 つまり、大きなデータの塊を細かく砕き、分散、並列したサーバーで同時に処理して、そして再度集めて並べ直すという手順です。 このような分散処理を行うソフトウェアは、Googleの「Big Table」という論文を参考に開発されたオープンソースであるHadoopMapReduce(マップリデュース)が有名です。


 また、分散した汎用PCサーバーにデータをストレージ(格納)する分散ストレージの技術も様々あります。 最近注目を集めているのは、先ほどご紹介したHadoopと一体となったHBASEや、Facebookのために開発されたCassandraです。このHBASECassandraのいずれもが、Twitterにおいても利用されてます。






 そして、これらの分散ストレージの特徴は、数十台、数百台、時には数千台と並べたPCサーバーの複数台に、データの複製(レプリカ)を作り、ストレージ(格納)するという点にあります。

 複数台にデータの複製(レプリカ)を作ることで、仮に1台のPCサーバーが壊れたとしても複製(レプリカ)されたデータは、他のPCサーバーに残っているので安全という考え方です。逆に、安価なPCサーバーは故障するものだという前提でシステムが構築されていると言うこともできます。

 ところで、現在のデータベースの主流であるリレーショナル・データベースは、更新が終了されたデータが常に読み込まれるというデータの一貫性(Consistency)を維持します。そのために、データが書き込みされている際には、読み込みができないよう、ロックを行います。




この書き込みをする機会が少ない場合には問題になりませんが、BIGDATAのような場合、一度に多くの書き込み処理が行われます。その都度、ロックされていては、BIGDATAを速く処理することが難しくなります。

 また、この分散型の処理は、リレーショナル・データベースのデータ間の関係づけを行う構造とは異なり、キーとバリューというシンプルなデータモデルという構造です。このシンプルなデータモデルが分散型でBIGDATAの高速な処理を可能としています。