Hadoopの高い拡張性と柔軟性がビッグデータに向いている
Hadoopが生まれたきっかけは、Googleが公開した論文だ。分散ファイルシステムの仕組みである「Google File System」と分散処理技術の「Google MapReduce」の論文をもとに、現在Apache Hadoopコミュニティの議長で「Hadoopの生みの親」としても知られるDoug Cutting氏らを中心としたメンバーにより開発された。当初のHadoopの中核は、分散ファイルシステムの「Hadoop Distributed File System」(HDFS)と分散処理フレームワークの「Hadoop MapReduce Framework」だ。
Hadoopの特徴は、まずはなんと言っても拡張性が高く分散処理に長けていることだろう。Hadoopクラスターには簡単にサーバーノードを追加でき、極めて柔軟な拡張性を備えている。リレーショナルデータベースのクラスターシステムが数ノードから十数ノード程度が現実的なのに対し、Hadoopなら数百ノード構成も珍しい話ではない。先進的なユーザーであれば、数千ノードを越える構成でHadoopを運用している例も多々ある。
ノード追加をする際にも、Hadoopクラスターは停止する必要がない。ノードを追加すれば、より大容量データを扱えるだけでなく、同時に分散処理の性能も向上できる。この辺りが、ビッグデータ活用と共に注目を集めるようになった最大の理由だろう。
また、この拡張性ある分散処理環境の構築に、特殊なハードウェアやOSなどを必要としないのもHadoopを普及させる要因となった。安価なコモディティサーバーを並べることで、膨大な量のデータを効率よく処理できる。これもまた、ビッグデータを活用したい人たちから好感を持たれたのだ。
もう1つの特徴が、スキーマレスでデータを格納できることだ。Hadoopでは、リレーショナルデータベースのようにあらかじめ格納するデータ形式を定義する必要はない。とりあえずデータを格納しておき、後から活用方法を工夫する使い方も可能だ。事前のデータ設計の手間を省くことができ、柔軟な形でデータを蓄積できる。これは、ITシステムに昨今求められているアジリティというニーズを満たすことにもつながる。そして、企業が抱えているビッグデータのほとんどが非構造型データだとも言われており、それを容易に蓄積できることにもなる。
Hadoopが得意な処理、不得意な処理
このようにビッグデータを扱う上では最適そうにも見えるHadoopだが、得意ではないデータや処理もある。たとえば、細かいファイル単位に分かれたデータを大量に扱うこと。Hadoopにはネームノードとデータノードがあり、ネームノードは分散ファイルシステムのメタ情報を管理する。データをHDFSに格納する場合は、格納するデータファイルを一定のサイズで分割し、ブロックデータとしてデータノードに保存する。そのため、ファイル数が膨大になると、それがネームノード処理のところでボトルネックとなりかねないのだ。
もう1つ不得意なのが、トランザクション処理。Hadoopでは基本的にデータはファイルに追記の形で格納される。データを更新する際にはHDFSの上で更新処理するのではなく、ファイル単位で書き換えたものをHDFSに格納し直すことになる。これでは、更新処理の効率はなかなか上がらない。
このように不得意なこともあるが、それらを除けば無限の拡張性や扱うデータの柔軟性があり、ビッグデータを扱う上でHadoopは大規模データを効率よく分散処理できることは間違いない。これは、従来のリレーショナルデータベースが最も不得意なところと言ってもいいかもしれない。
ビッグデータを扱うのに魅力的なHadoopのベースとなっているのは、Apacheオープンソースコミュニティで開発されている「Apache Hadoop」だ。ここをベースに今やさまざまなベンダーから、Hadoopディストリビューションが提供されている。いろいろありすぎて、それぞれの違いを把握するのはもはやユーザーレベルでは難しいだろう。
さらに、Hadoopの周りにはHiveやHBase、SparkやStormなど、Hadoopエコシステムと呼ばれる便利なツールや機能が続々登場している。Hadoopを活用しビッグデータを扱うためには、これらも活用することになる。Hadoopエコシステムに対し、どうアプローチしていけばいいのかも新たな課題だろう。
1つ鍵になるのは、Hadoopは決して従来のリレーショナルデータベースなどで実現してきたシステムを置き換えるものではないということだ。従来のIT投資を活かしつつ、新たにビッグデータを扱うためにHadoopを活用する。従来システムを補完し、ビッグデータ分析の幅を広げるのがHadoopだ。その際にHadoopとそのエコシステムを賢く選び、組み合わせて活用する。そういったポイントを十分に考慮することで、Hadoopとの新しい付き合い方を考えるべき時が今ということになるだろう。
Hortonworksが100%オープンソースである理由
オープンソースベースのApache Hadoopに何らか手を加え、それにより独自の特徴を生み出しているHadoopディストリビューションは多い。それらは特定ワークロードの処理が効率的だったり、独自モジュールを使うことで高速に処理できたりする。オープンソースから離れた独自路線で、純正のオープンソースでは1時間かかる処理が数分で済むこともあるかもしれない。独自に手を加えるのは特定のワークロードを速くするものであり、それがすべてのニーズを満たすものではない。
「特定のワークロードを速くするためだけに、Hortonworks Data Platformの構成やバージョンを決める考えは持っていません。Hadoopをもっと大きなスケールで使いたい。一番安定しているオープンソースベースのものを、ユーザーが正しく使うにはどれがいいかを考えています」
そう語るのは、Hortonworks エンタープライズ アカウントマネージャの佐藤隆之氏だ。Hortonworksでは、純正のHadoopをどうやったら正しく使うことができるのかを考えている。
その理由の1つとして、Hadoopとそれを取り巻くHadoopエコシステムが、オープンソースのコミュニティの中でかなり速いスピードで進化していることが挙げられる。このオープンソースコミュニティでの進化の方向性こそが、Hadoopユーザーにとっての間違いないニーズに基づいているというのがHortonworksのスタンスだ。
「コミュニティの開発方針は、数多くのエンドユーザーから挙がってくる要望を満たすためのものです。それこそが正しい方向性だと信じています」と佐藤氏。一方でベンダーが独自に手を加える方向性は、ベンダーの考え方による。ベンダーの開発者の判断であり、それはユーザーのニーズからはずれていることもあるだろう。そこで、Hortonworksでは、100%オープンソースであることにこだわっている。
「Hortonworks Data PlatformはオープンソースのApache Hadoopそのものでもあります。それを専門にサポートするのが、Hortonworksの役割であり、オープンソースコミュニティの最も近くにいるディストリビュータであるということなのです」(佐藤氏)