前回、ビッグデータが注目される理由と、新しいデータ活用基盤であるHadoopの必要性について解説した。続く本稿では、新しいテクノロジーであるHadoopとはどのようなものかについて言及することにする。Hadoopと言うと、難しくて取っつきにくいものという印象をお持ちの方も多いかもしれないが、実は理にかなっていて比較的わかりやすいことがおわかりいただけるだろう。
Hadoopの特徴を見る
Hadoopを一言で表すならば、「ビッグデータ時代の分析用データストア」とするのが適切だろう。その特徴としてまず挙げられるのが、構造化、非構造化に関係なくあらゆるデータを蓄積可能であることだ。
とはいえ、単に溜めるだけであればファイルサーバと変わらないが、Hadoopの場合、データを溜めるだけではなく、データを加工するフレームワーク(=MapReduce、この頃はSparkも活用可能)や、溜めて、加工したデータを活用するアプリケーションまでもが含まれる点に注目してほしい。
Hadoopに蓄積された大量かつ多様なデータを分析や検索するアプリケーションまでをHadoopという1つのデータ基盤上で完結でき、しかもこのシステムは並列分散処理を行うため容易にスケールアウトが可能となっている。このことはつまり、分析のためのデータをあちこちに移動させる必要がないということでもある。これは、ビッグデータ時代に改めて求められる「パフォーマンス」に加え、データを用意してから結果を得るまでのトータルの時間である「アジリティ」を向上させる。Hadoopは特にビッグデータ分析において圧倒的な処理性能と低コストを実現する。
また、OSSベースであり、かつ汎用ハードウェアであるx86サーバ(CPU+内蔵ディスク)を利用することで、コスト効率が高いのもHadoopの大きな特徴となっている。これにより分析のためにより多くのデータを利用可能となるわけだ。
Hadoopを構成する2つの主要コンポーネントと分散処理の仕組み
次にHadoopの構成についてだが、Hadoopは大きく2つのコンポーネントで構成されている。
まず1つは、分散ファイルシステムのHDFS(Hadoop Distributed File System)だ。ファイルシステムなので、ストレージ機能であり、構造化データであるか非構造化データであるかに関係なく、あらゆるデータを蓄積することができ、求められる容量やパフォーマンスに応じてスケールアウトする分散ファイルシステムである。
そしてこのHDFSの上に、「MapReduce」という大規模分散処理フレームワークが存在する。これはデータを加工するフレームワークだと考えてもらっていいだろう。MapReduceとは、文字通り「Map」という処理と「Reduce」という処理を組み合わせて実行するもので、HDFS上にあるデータの分散処理を行うことができる汎用的なフレームワークであり、データの集計や検索、クレジングを行うことができる。
データは、複数のサーバを使って並列に処理される。つまりデータを1つHadoopに入れるとデフォルトでは、3箇所に分散して置かれて処理が実行される。例えば5台のサーバで構成するHadoopのシステムであれば、ノード1にデータを入れるとノード1とその他2ヶ所にそのデータはコピーされ、データが保護されるだけでなく並列処理がされることになる。
仮に10,000ページあるドキュメントの中に、ある単語が何回出現するのかを数える処理をHadoopで実行したとしよう。Hadoopはまず、No1のサーバは2,000ページ目までを処理し、No2のサーバは2,001ページから4,000ページまでを処理するようにといった指令を行う。つまり1台のサーバはおのおのが担当する2,000ページ分の処理で済むために高速になる。これがMap処理だ。次に、各サーバでの結果が出たら、それを集計処理するのがReduce処理である。
このような非常にわかりやすいフレームワークで多様な処理を行うことができ、さらには加工したデータをHadoopエコシステムと呼ばれるOSSのデータ活用アプリケーション、もしくはDWHやデータマイニング、機械学習、BIとった商用のアプリケーションで活用する──それがHadoopの仕組みなのである。
なぜHadoopは速く安く大量のデータを処理できるのか?
Hadoopの概念図を示すと、図のようになる。
一番下にデータ/ファイルを溜めるファイルシステムであるHDFS(MapRの場合はMapR-FS)があり、その上にデータ/ファイルを加工するMapReduceのフレームワークやSparkがある。そしてJava APIを介してその上にHadoop Ecosystemと呼ばれるアプリケーション群が存在する。また商用Hadoopのほとんどには、これらを統合管理する管理システムも含まれる。
この概念の何が美しいのかというと、Hadoopはデータ活用に必要なサブコンポーネントを含む大きなソフトウェアであり、溜める機能から使う機能のコンポーネント全体が1つとなっている――つまり、先にも書いたが、データの「在るところ」で処理が行われるため、在るところから「活用するところ」にデータを移動したり、コピーしたりする必要がなく、トータルの時間が短縮されてアジリティが上がる点だ。
従来であれば、NAS等のストレージに溜めたデータをネットワーク転送でDWHに渡して処理をするといったプロセスが必要であったが、Hadoopであれば一切必要ない。ビッグデータなどの概念からもわかるとおり、データ量が増加していることで、データを移す時間的、経済的コストは非常に高くなっている。
例えば、PB(ペタバイト)単位のデータとなるとコピーや移動が終わるまでに何日もかかることは普通であり、コピー前後でレコード数が合わないような事態も生じてくる。なるべく同じところでデータを処理し、データを動かさないというのは、ビッグデータ処理の原則と言っていいだろう。
MapRによるHadoopのパッケージ全体図を見ていただければわかると思うが、Hadoopコアであるデータストアとデータ処理(HDFS/MapReduce)、管理ツールに加え、機械学習や傾向分析、検索、NoSQLなどさまざまなツール群からなるOSSベースの分析アプリケーション=Hadoop Ecosystemも含めて、Hadoopのパッケージを構成している。もちろん、各種の商用分析アプリケーションからも使うことができる。
こうしてHadoopは、分析に必要なスタックをすべて網羅するのである。その構造のイメージは次のようなものだ。
最初にビジネスニーズがあって、そしてそれを満たすロジック層がある。ここは例えばSPSSやSASのようなビジネスアナリティクス製品、BAやBIといったレポーティングツールなどが含まれる。
そしてその下にプロセッシング層がある。ここはいわゆるDWHのようなところで、例えば従来のHadoopであればMapReduceや、最近はSparkも使われるようになっている。
次にHDFSやストレージ(NAS)のようなプラットフォームがあって、インフラには、オンプレミスならばサーバ(CPU+内蔵ディスク)、もしくはクラウドという選択肢が提供されている。これらのスタックうち、Hadoopはロジック、プロセッシング、プラットフォームの層をカバーするのである。
今回、Hadoopの概要について説明したが、次回は、RDBMSとの比較、そしてNoSQLについて解説しよう。
解説者紹介
三原 茂 (MIHARA Shigeru)
- 株式会社マップアール・テクノロジーズ アライアンス&プロダクトマーケティング ディレクター /
日本データマネジメント・コンソーシアム(JDMC) セミナー部会メンバー
サン・マイクロシステムズ、日本オラクル、日本IBMといった大手ベンダーでプロダクトマーケティングや新規製品のビジネス開発に従事。ハードウェアからミドルウェア、商用からOSSまで、多岐にわたる製品のプロモーションや販路拡大を行う。
日本オラクルとファストにて検索やマネタイズ分野のビジネスに関わり、EC、ビッグデータといったITの新分野に興味を持ち、2014年にマップアール・テクノロジーズへ入社。