Big data を使用した新たなビジネスの視点を得る

大量のデータを処理するための新たな機能が登場したことにより、技術やビジネスの様相が変わりつつあります。この記事では、そうした変化の原動力と新たな様相、そして Apache Hadoop による分析を利用した場合の可能性について検証します。

Stephen Watt, Certified IT Architect, IBM

Stephen WattStephen Watt は、テキサス州オースチンの研究所にある IBM Software Group の戦略組織で新興技術に携わるソフトウェア・アーキテクトです。IBM に入社前には中東で数年間コンサルティングを行ったことがあり、またアメリカと彼の出身地である南アフリカで、設立されたばかりの会社にも勤務していました。彼は何冊かの技術書と技術記事を出版、発表しており、それらは Wrox Press と IBM developerWorks で入手することができます。



2011年 7月 29日 (初版 2010年 6月 29日)

市場を駆動する要素

近年では、Web でも企業でも、爆発的にデータが増大しています。この現象の要因はさまざまであり、例えばテラバイト規模の安価なストレージ・ハードウェアが手軽に利用できるようになったこと、エンタープライズ・データが時間の経過と共に臨界量に近づいていること、標準化により情報の提供や交換が容易になったこと、などを挙げることができます。

企業の視点から見ると、こうした情報はどれも、従来のリレーショナル・データベースや、さらにはデータ・ウェアハウスにすら保管するのが困難になりつつあります。こうした問題から、長年行われてきたプラクティスに関し、いくつか難しい問題が提起されます。例えば、10 億もの行を持つテーブルに対し、どのようにクエリーを実行すればよいのでしょう。データ・センターのすべてのサーバー上にあるすべてのログに対し、どのようにクエリーを実行すればよいのでしょう。さらに複雑なことに、処理が必要な情報の多くは構造化されていないテキストまたは半構造化されたテキストであり、こうしたデータにクエリーを実行することは簡単ではありません。

こうした大量のデータが存在する場合、処理上の 1 つの制約として、データの移動に多大な時間がかかります。Apache Hadoop はこうした問題に対応するために登場し、データを作業の場所に移動するのではなく、逆にデータのある場所で作業をするというユニークな手法で対応しています。Hadoop はクラスター技術であり、別々でありながら統合された 2 つのランタイムで構成されています。1 つは冗長なデータ・ストレージを提供する HDFS (Hadoop Distributed File System) であり、もう 1 つはユーザーが送信したジョブを並列に実行し、HDFS に補完されているデータを処理する Map/Reduce です。Hadoop はすべてのシナリオに適しているわけではありませんが、明らかにパフォーマンスが優れています。コミュニティーは、Hadoop を使うことで大規模なデータを処理できるだけではなく、興味深い多種多様な分析にも Hadoop を使用できる可能性があることに気付いたのです。

Hadoop を利用すると、一般的な廉価版のハードウェア上で実行するクラスターのスケーラビリティーをリニアに変化させ、大規模でリッチなデータセットに対応することができます。こうしたデータセットでは、最初に、従来は対応できなかった異種混成のデータ・ソースに対して分析を実行し、次に、その同じデータに対してスケールを大きくして分析を実行することで新たな視点が得られます。そのため、InfoChimps の共同設立者の 1 人である Flip Kromer の言うパラダイム・シフトが起こります。彼によれば、「Web は、あらゆることに関して何かを見つけられる場所から、何かに関してあらゆることを見つけられる場所へと進化しています」。Kromer はさらに、過去 100 年間に行われた野球の全試合の詳細な結果 (選手についての詳細、スコア、野球場の場所など) を野球ファンが取得できるようになるシナリオを提示しています。もし誰かが、そのデータセットと気象台のデータとを結合し、同じ期間内にすべての気象台で測定され公開されている値と試合のデータを組み合わせたとすると、38 歳のピッチャーが Wrigley Field で気温が華氏 95 度 (摂氏 35 度) 以上の時にどんな成績を上げるか、統計的に予測できることになります。


Big data のエコシステム

重要な点として、Big data の分野はまだ比較的新しく、Big data を利用するためには技術的な障害があることを指摘しておきます。先ほど触れたように、データは Hadoop の中で「ジョブ」の形式で処理され、ジョブは Map/Reduce と呼ばれる仕組みを使って Java™ プログラミング言語で作成されます。Hadoop へのコントリビューションにより、他の言語を使える場合もありますが、ビジネスの問題を分析し、そうした問題を Map/Reduce ジョブとして実行するソリューションに分解する方法を適切に理解するプロセスは、決して簡単なものではありません。

Hadoop による可能性を本格的に活用するためには、開発者の世界を超え、より多くの人々にとって利用しやすくするための広範な実用化技術が必要です。

図 1. Big data エコシステムの概要
この図には Hadoop アプリケーションの階層構造が示されています。

Hadoop に関し、強く望まれていたツールとサポートを提供するエコシステムが登場しました。各コンポーネントは他のコンポーネントと連動し、大部分のユーザー・シナリオに対応する一連の手段を提供します。そうした手段を以下に挙げます。

ロード・ツール

Hadoop を使ってデータを分析するためには、そのデータを HDFS に変換する必要があります。そのためにはロード・ツールが必要です。Hadoop そのものが、ファイルシステムから HDFS へのコピー機能と、その逆のコピー機能を備えています。より複雑なシナリオでは、Sqoop (「参考文献」を参照) など、SQL から HDFS へのデータベース・インポート・ツールを利用することができます。別の形式のロード・ツールとして、Apache Nutch などの Web クローラーがあります。Web クローラーは特定の Web サイトをクロールして Web ページを HDFS に保存します。そのため、それらの Web コンテンツに対して任意の分析を実行することができます。

リアルタイム・データも、潜在的な情報源の 1 つです。Twitter4J のような技術を使用して Twitter の Streaming API に接続し、ツイートを JSON フォーマットで直接 HDFS に永続化することができます。

Big data に対して分析を行う場合は通常、多様なデータセットに対し、一括してクエリーを実行します。多くの場合、そうしたデータセットのソースは多様であり、通常は企業内で既に利用可能なデータ (内部データ) と Web から得たデータ (外部データ) とが混在しています。内部情報の例にはデータ・センターのログ・ファイルなどがあり、外部情報としては、クローラーによって収集された数種類の Web サイトや、データ・カタログからダウンロードされたデータセットなどが考えられます。

データ・カタログ

データ・カタログにより、ユーザーがデータセットを検索する際に強く望まれていた機能を実現することができます。自分自身で実際に検索してみるまで、巨大なデータセット (特に、実行しようとしている特定の分析シナリオに合致するデータセット) を検索することがいかに困難か、気付かないものです。ユーザーは通常、Web をクロールするかソーシャル・メディア・サイトをマイニングして自分独自のデータセットを作成せざるを得ません。関心対象のトピックに関して構造化された既存のデータセットを単純に見つけてダウンロードすることができるなら、大きく時間を節約することができます。InfoChimps のような会社はデータセットの総合カタログを提供し、カテゴリーまたは検索によって特定のデータセットを見つけられるようにしています。データ・カタログの別の例として、Amazon の Public Data Sets があります。

分析ツール

HDFS に保存されたデータに対して Hadoop 自体を使って分析を行う場合、通常は開発者のスキルが求められ、Hadoop の Map/Reduce API を使って Java 言語でジョブを作成する必要があります。こうした API を直接操作する場合には、Eclipse の KarmaSphere Studio (「参考文献」を参照) などのツールを使うことで、Hadoop 専用の IDE による生産性の向上を実現できます。他の言語を使って Hadoop Streaming や Hadoop Pipes を操作する別の方法もありますが、その場合にもやはり開発者のスキルが必要です。そうしたことから、あまり複雑ではない方法で Map/Reduce ジョブを定義、実行する必要性が生じています。

シェル・スクリプトや UNIX® のパイプを理解している人であれば、Ruby とシェル・スクリプトを使ってジョブを作成、実行できる WuKong (「参考文献」を参照) を検討してもよいかもしれません。Apache の Pig と Hive (「参考文献」を参照) はデータ・アナリストの関心を呼びそうな 2 つの技術です。この 2 つは SQL と似たクエリー・インターフェースを持っているため、ユーザーは指定のジョブに対する分析の作成方法や実行方法を高級言語で表現することができます。さらにビジネス・アナリストに対象を絞った別の手段として、IBM® BigSheets (「参考文献」を参照) があります。BigSheets では、スプレッドシートに似たブラウザー・ベースの視覚的な方法で分析ジョブを定義、実行、視覚化することができます。

どの方法も、よくユーザー定義の関数やマクロと呼ばれる、拡張機能を使用することが普通です。そうした関数やマクロは入力データを受け付け、それらのデータを (データの意味に基づいて、あるいはデータが明示的になるように) 構造化します。そのため、従来の分析手段と似た方法で情報にアドレスを付け、また情報を照会することができます。分析ツールはエクスポート・ツールとともに使用されます。これは、分析を行った後でデータに関して実際に何か有用なことをするためには、エクスポート・ツールが不可欠だからです。

エクスポート・ツール

Big data を対象に何かを調べる場合 (分析)、得られる答え (結果としてのデータセット) も Big data になりがちです。多くの場合、そうした答えは大きすぎ、人間が読み取ったり理解したりすることはできません。そうした場合、結果を視覚化して提供することが 1 つの解決策かもしれません。例えばタグ・クラウドは大量の結果セットをフィルタリングしてくれるため、人間はデータの中で価値のある特定の範囲を瞬時に認識することができます。別の方法として、データセットを特定のフォーマット (JSON、CSV、TSV、ATOM など) にエクスポートし、アプリケーションで使えるようにする方法もあります。興味深い視覚化方法はよく使われていますが、そうした方法は通常、Hadoop に関連する既存のツールに組み込むことはできません。これは新たな領域であり、この領域では今後何ヶ月かの間に何らかの革新が起こると思われます。

Apache Hadoop

Apache Hadoop は、このエコシステムの核心部分です。すべてのデータは Apache Hadoop にあります。このエコシステム特有の制約として、Big data は停止している時間が多いという制約があります。つまり大量のデータを移動しようとすると、どのような計算処理の場合にも深刻な遅延を生じます。そのため、データが存在する場所で作業をする Map/Reduce が非常に効率的なのです。また Hadoop の垂直スケーリングと水平スケーリングの能力のおかげで、Hadoop はクラウドにも有効な選択肢です。つまり Hadoop クラスターをプロビジョニングしてデータをコピーし、ジョブを実行して出力を取得した後、作業が完了したらクラスターを停止することができます。こうすることで、時々実行される程度のジョブに対してハードウェアを購入して保守するよりも、大幅にコストを削減することができます。

BigSheets

プログラマーではなくても分析に関心を持つ人達にとって、InfoSphere BigInsights は IBM の新しい製品群であり、この中には BigSheets (「参考文献」を参照) と呼ばれる技術プレビューが含まれています。BigSheets には、大規模なデータの収集、分析、利用のための優れたビジュアル・インターフェースが用意されています。BigSheets は Apache Hadoop をベースにした極めて包括的なツールであり、容易に構成可能なロード・ツールや分析ツール、エクスポート・ツールを提供しています。


まとめ

この記事では、大量のデータが存在する現状と、この問題に対してオープンソース・コミュニティーが Apache Hadoop プロジェクトによってどう対応しているのかを説明しました。また、Big data を新たな視点で洞察することから生まれる非常に興味深い可能性や、Apache Hadoop に関連して登場したエコシステムの中にある独自のオープンソース・ツールをいくつか検証しました。

より詳細に Hadoop を理解したと思う人は、ぜひ「Linux と Hadoop による分散コンピューティング」(「参考文献」を参照) を読み、Apache Hadoop プロジェクトのウィキに詳述されている WordCount の例 (Hello World の Map/Reduce 版) を試してみてください。

分析のための簡単な入門資料が必要な人は、Apache の Pig (「参考文献」を参照) を試し、Pig プロジェクトのウィキにあるチュートリアルを実行してみてください。

参考文献

学ぶために

製品や技術を入手するために

  • Apache Hadoop の標準的なディストリビューションも入手することができます。
  • SQL から Hadoop へのデータベース・インポート・ツール、Sqoop を入手してください。
  • Hive をダウンロードしてください。
  • Wukong について調べてみてください。
  • 皆さんの次期オープンソース開発プロジェクトを IBM ソフトウェアの試用版を使って革新してください。ダウンロード、あるいは DVD で入手することができます。
  • IBM 製品の評価版をダウンロードするか、あるいは IBM SOA Sandbox のオンライン試用版で、DB2®、Lotus®、Rational®、Tivoli®、WebSphere® などが提供するアプリケーション開発ツールやミドルウェア製品を試してみてください。

議論するために

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Open source
ArticleID=502263
ArticleTitle=Big data を使用した新たなビジネスの視点を得る
publish-date=07292011