はじめに
近年、「 Hadoop」というキーワードをよく目にします。もしかしたらこの記事を読んでいるあなたも、Hadoopというキーワードを目にしたり聞いたりしたことがあり、興味を持ってこの記事をご覧になっているのかもしれません。Hadoopとは何でしょうか?何ができるのでしょうか?今回から全5回にかけて、Hadoopの活用事例や活用のヒント、そしてこれからHadoopを活用しようと考えているエンジニアが知っておくべきことや、情報収集の仕方を解説します。
Hadoopって何?
Hadoopとは何でしょうか。簡単に言うと、テラバイト、ペタバイトといった巨大なデータを処理するためのオープンソースの分散処理基盤で、Googleが検索エンジンのバックエンドに利用している技術のクローンです。Googleは2003年に大規模分散ファイルシステム「Google File System(GFS) 」についての論文[1] を、2004年に大規模分散プログラミングモデル「MapReduce」についての論文[2] をそれぞれ発表しました。
Hadoopは、これらの内容をもとに、2005年に、当時Yahoo! Inc.のエンジニアであったDoug Cutting氏によって開発がすすめられたプロダクトで、GFSに相当する「Hadoop Distributed File System(HDFS) 」と、MapReduceに基づいた大規模分散処理フレームワーク「Hadoop MapReduce(以下MapReduce) 」からなります。
Hadoopは現在、Apache Software Foundationがメンテナンスしています。HDFS、MapReduceともに1台のマスターサーバと複数台のクラスタで構成されており、部分的な故障に強いという特徴や、サーバを追加しただけで簡単に格納容量や性能がスケールアウトしやすいという特徴があります。これらの特徴を裏付けるアーキテクチャや、MapReduceの処理フローなどの詳細については、詳しい書籍やサイトが充実しているので、そちらをご覧ください。
図 Apache Hadoop公式サイト
Hadoopは新しい領域のビジネスを可能にする
Hadoopの最大の特徴は、巨大なデータを高速にバッチ処理可能であるということです。このような特徴を聞くと、Hadoopの用途は従来のバッチ処理の置き換えを想像するかもしれませんが、それだけではありません。Hadoopの本質は従来扱うことができなかった巨大なデータが処理可能なことであり、新しい領域のビジネスを可能にするのです。大量のデータはまさにビジネスチャンスの宝の山です。しかし従来は大量のデータを採取することは可能でも、蓄積しておくこことは難しいという課題があり、そのようなデータはやむを得ず捨てていました。しかしHadoopを活用すれば巨大なデータを蓄積しておくことが可能で、しかも高速に処理することができます。
さて、Hadoopは新しい領域のビジネスを可能にすると述べましたが、どのように活用されているのでしょうか。第1回は広く知られている例をもとに、Hadoopがどのようなシーンで活用できるのか見てまいります。
New York Times社の事例
New York Times社は、全米3位の発行部数を誇る日刊紙『The New York Times』を発行する新聞社です。同社は過去の掲載記事をPDFファイル形式でユーザに提供するサービスを展開しています。サービスを始めるに当たり、同社では約130年にさかのぼる過去の記事をいかに効率よくPDFファイルに変換するかが課題でした。対象の記事はおよそ1,100万本で、TIFF形式でスキャンした画像はおよそ4テラバイトにも上りました。
彼らはこの課題に対してHadoopを活用することで、解決の糸口を見出しました。Amazon Web Services LLCが展開するIaaS「Amazon EC2[3] 」を利用して100ノードから成るHadoopクラスタを構築し、4テラバイトの画像データを、たったの24時間で約1.5テラバイトのPDFデータに変換することができたのです。この間の作業にかかった費用もわずか240ドルでした。Hadoopを活用することで、大量のデータのバッチ処理を驚くべき低コストで実現することができました。
さらに同社は、読者のWeb閲覧履歴ログを収集・分析にHadoopを活用しています。EC2上に構築した20台のサーバから成るHadoopクラスタを利用して、12テラバイトにも及ぶデータを処理し、クッキー追跡を利用して同社のサイトを訪問したユニークビジター数、総PV、ユーザ当たりのPVを集計しています。この集計結果を利用し、年齢層別の統計データや、記事別データと組み合わせ分析を行っており、どのようなユーザがどのような記事に関心を持ったかについて調査をしていると発表しています。大量の画像データをPDFに変換するという典型的なバッチ処理への適用からHadoopの活用が始まったNew York Timesは、今やその力をマーケティングにも活用しているのです。
Yahoo! Inc.の事例
Yahoo! Inc.はインターネット関連のサービスを展開するアメリカの企業です。検索エンジンやメールサービスをはじめとした、各種Webサービスを展開しています。また同社はポータルサイトを運営しており、そこに掲載する広告を収入源の1つとしています。
図 Yahoo!公式サイト
同社のポータルサイトをご覧になったことがある方はご存知かと思いますが、ユーザごとにポータルサイトに掲載されるコンテンツや広告が異なっています。これは、ユーザのアクセス履歴を分析し、表示するコンテンツや広告を最適化しているからなのです。また、メールサービスに関しては、高い精度を誇るスパムフィルタ機能が実装されていることで知られています。彼らはこのようにポータルサイトに表示するコンテンツ/広告の最適化や、スパムフィルタなどにHadoopを活用しています。
また、Hadoopの底力を物語る事例として、彼らの検索支援機能「SearchAssist」にHadoopを適用した事例を発表しています。この発表によれば、3年分のログを分析するのに従来C++で実装していた処理が26日を要していましたが、Pythonで実装できるようになったうえに[4] 処理時間も20分に短縮したとのことです。
同社はこのように高速なバッチ処理をどの程度の規模のHadoopクラスタを用いて実現しているのでしょうか。実は米Yahoo! Inc.は世界最大のHadoopユーザで、いくつかのHadoopクラスタを運用しています。SearchAssistにHadoopを適用した時点では、サーバ台数は合計でおよそ25,000台、ストレージは合計でおよそ82ペタバイトに上ると発表していました。このときの最大のクラスタは4000ノード、ストレージ総容量16ペタバイトコア数は32,000コアだったそうです。昨年夏に開催されたHadoop Summit 2010での同社の発表によると、その後サーバ台数は25000台から38000台にまで増設し、170ペタバイトのデータを管理・処理していると発表しています。実に途方もないスケールです。
従来はこれだけの台数のサーバを用いてスケールアウトのメリットを享受できるプロダクトは存在しなかったのではないでしょうか。Hadoopがいかにスケールアウトしやすい設計になっているかがうかがえます。このスケーラビリティがYahoo! Inc.のサービスの一端を支えているのです。
Facebook, Incの事例
Facebook, IncはSNSサイト「Facebook」を運営するアメリカの企業です。Facebook, Incでは日々のSNSサイトのPVレポート、日時/週次のクリックレポート、アドホックレポートの作成や、機械学習にHadoopを活用しています。
彼らはHadoopをそのまま利用するのではなく、独自に開発したいくつかのツールを組み合わせてHadoopを利用しています。たとえば複数のWebサーバに格納されたアクセスログを効率よくHadoopクラスタに格納するために、分散ログ収集ソフト「Scribe[5] 」を利用しています。Scribeは各Webサーバのログをキューイングしながら1つの巨大なログにまとめる仕組みがあるようです。Hadoopは少数の巨大なファイルを扱うのに適した設計になっているため、Scribeが持つ仕組みは理にかなっているといえます。
こうして集められたアクセスログは、「 Hive[6] 」と呼ばれるツールを利用して分析しています。Hiveもまた、Facebook, Incが独自に開発したツールです。Hiveとは、Hadoopの分散処理フレームワーク「MapReduce」のジョブをプログラミングすることなく簡単に開発することができるツールです。
HiveではSQLライクなクエリ言語「HiveQL」を利用することができ、たとえばSELECT文でHDFSに蓄積されたデータを取得したり、INSERT OVERWRITE文でHDFSにデータを格納することができる他、データを加工したり結合することができます。HiveQLは、発行されると自動的にMapReduceジョブに変換されるのです。この仕組みのおかげで、従来SQLを用いて分析を行ってきた人が簡単にMapReduceのメリットを享受できるようにするだけでなく、アドホックな分析を可能にするのです。
Facebook, Incでは、およそ200人の社員が日常的にHiveを使用しており、約95%のMapReduceジョブが、Hiveを経由して発行されているといいます。このように、HadoopはScribeやHiveなどの周辺技術と組み合わせることで、従来のように定期的に実行される典型的なバッチ処理だけではなく、巨大なデータに対するアドホックなバッチ処理を可能にするのです。
図 Hiveの概念
まとめ
第1回は従来のバッチ処理の延長としてのHadoopの活用事例から、Hadoopがスケールしやすいという特徴を生かして、大量のサーバで検索支援機能を改善した事例や、周辺技術と組み合わせてアドホッククエリへ応用した事例を見てまいりました。
今回紹介しなかったHadoopの活用事例の1つに、検索インデックスの作成への応用があります。次回は国内での検索サービスへの適用事例を題材に、Hadoopの活用事例を見ていきましょう。