Hadoopは「探すべき針」の存在が分かっている場合に有効
--ビッグデータをどのように分析しているのか?
求めるものが存在することが分かっている場合はいわば、わらの山の中から針を見つけるようなもので、これはただ探せばいいわけです。わらの山の量は非常に大きくなります。素早く、効率的に針を見つけるためのテクニックが求められます。
検索の演算を高速にするため、クラスタ内で多くのノードを切り分けていきます。つまり、わらの山を小さく分割してそれらをノードに載せ、各ノードに針を見つけるよう指示する。それぞれの山の中だけを探し、報告せよという流れになります。ノード同士は、連絡を取り合わなくても良いのです。
これがHadoopのしくみです。ビッグデータを扱う際、山が大きければ大きいほどノードが多くなり、検索は速くなります。クラスタが有効に機能します。
わらの山を例にHadoopを説明する
探すべき針があるかどうかも分からない場合
もう1つの類型は、いうなれば探すべき針があるかどうかも分からない状態です。見つけようとしても、そこにはないかもしれません。探すべき場所が異なることもあります。あるだろうと思って探してみても見つからない。
こちらはかなり困難な問題です。例えば不正の検出です。そこに不正があるのかどうかはわかりません。あるいは、インターネット上の侵入の検出もそうです。コンピュータウイルスの場合も、シグネチャがあればウイルスだとわかるのですが、新しいウイルスが出てくれば、それに追いつけないと、検出できません。
しかし、「fuzzy detector」という新しいツールを用いれば、これまでになかったウイルスが現れても検出できます。ここでは、確率が1つの軸となります。もしかしたらウイルスかもしれない。その確率が80%ならイエス、30%ならノー、ウイルスではないということになります。確率を決めるやり方はさまざまですが、一つはグラフをつくることです。
何を探せばいいのか、何を検索すべきなのかさえ不明の場合、わらの山から、わらを二本取り出して比較する。1つ1つのわらの相互間の関係性を調べ、それをグラフ化します。99%、答えはAだとしても、1%は不確かなところがあるから、グラフになるわけです。100%これだということはあまりないのです。eBayやPayPalでは、各ユーザーの行動をグラフ化しており、それを基準に取引の際に本人かどうかを判定します。