多くの有名企業が利用し始めたことから注目を浴びているオープンソースの大規模分散データ処理システム「Hadoop」。
2010年3月8日(月)、六本木ミッドタウンのYahoo Japanにて、Yahoo! ,Inc. Hadoopチーム アーキテクトのOwen O’Malley氏を迎えて「gihyo.jp×Yahoo! JAPAN presents "Open TechTalk" Hadoop Hacks Night」((株)技術評論社・ヤフー(株)主催)が開催されました。
第1部 Owen O'Malley氏のプレゼンテーション
5,000億人ものユーザのデータの解析に威力を発揮
最初のセッションは、Owen氏によるプレゼンテーション。冒頭で、氏がまず述べたのが、「Hadoopはオープンソースであり、開発者が協力して力をあわせてプロジェクトを進めていける」というメリット。コミュニティでのメールのやりとりは2007年から毎年倍以上の伸びを見せており、2009年には大きく増えたことを明らかにしました。
Hadoopを最も利用しているのは米Yahoo!で、所有しているノードは25,000ほど。現在、サブプロジェクトも含めて約40名の開発者がフルタイムでHadoopに関わっていることを明らかにしました。パッチの提供が増えてるにつれ、提供者の中にヤフーが占める割合も増えてきているとのことでした。また、テストは4階層で行っているとのこと。
月間5,000億人ものユニークユーザがいるYahoo!では、毎日のトランザクションでぺタバイト級のデータが発生します。そのような大量のデータを安価でどこでも手に入るハードウェアで処理するのにHadoopが役立つとのことです。また、多くのハードウェアがあるとその分故障も多く発生しますが、Hadoopがあればそのあたりをうまくハンドリングできるメリットもあります。
さらに、Yahoo!でHadoopを利用している事例として、トップページの画像のクリックレートなどの分析が紹介されました。ユーザによってどんなコンテンツを見せればいいかを最適化し、滞在時間を延ばすことなどにも貢献できるとのことです。
他にも、メールサービスにHadoopを利用し、スパムをはじく際の分析などを行っているそうです。
生産性への驚異的なインパクト
次に、プログラマにとってのメリットとして挙げられたのが生産性の高さです。処理が高速化すれば、分析されているデータが本当に役に立つものかを短時間で知ることができますし、5台のサーバの購入許可を得るのに何日も待つ必要がなくなります。
さらに、JavaやPythonなど汎用言語を利用できるので開発がしやすい点も紹介されました。実例として紹介されたSearch Assistでは、Hadoop使用前はC++で2~3週間かけて実装したプログラムで26日かかっていた処理が、HadoopならばPythonで2~3日で実装、20分で処理が終わるとのことでした。
さらに、より開発を効率化するための手段としてPigを紹介。Pigを利用すると、若干パフォーマンスが遅くなるももの、より短いコードで同じ処理を書くことができます。Yahooでは全体のコードの60%ぐらいがPigで書かれているそうです。
Hadoopのこれから
現在、Owen氏はケルベロス認証の実現に取り組んでいるそうです。後のセッションでも指摘されているのですが、現在Hadoopはセキュリティ面での不安が取り沙汰されているので、その課題解決を目指しているとのことでした。
もう1つは、後方互換性の確保。Hadoopがスタートして4年間ですが、その間に作られたAPIの資産を引き継ぐ必要があります。また、APIがパブリックか、プライベートかのラベルづけも行っていくとのことです。
この他、HDFSにAppendで追加できるようにする取り組みや、異なるユーザグループでクラスタを共有できるようにする取り組みが行われているとのこと。また、Pigの中にSQLやメタデータを追加し、それによってSQLに近い形でPigを利用できるようになるそうです。
さらに新しいワークフロースケジューリングシステム「Oozie」ではMakeとCronが新しいデータに入ったときジョブを走らせることができるようになり、テストがよりスマートにできるようになる見通しが語られました。
第2部 吉田一星氏のプレゼンテーション
ログ解析、検索関係、機械学習のために利用
続いて登壇したのは、R&D統轄本部の吉田一星氏です。吉田氏は、Yahoo! JAPAN Tech Blogで記事を執筆しています。
Yahoo! JAPANでは、2007年ごろからHadoopを利用していたのですが、当時はサービスごとにクラスタ、検証用クラスタがばらばらになっていた状態でした。そこで去年、ノウハウを収集するHadoop Working Groupを立ち上げ、全社統一化が進められているそうです。
Yahoo! JAPANでは各サービスのプラットフォームがあり、それぞれの利用事例が語られました。まず挙げられたのがモバイル検索。クロールしたデータを差分データとして即時反映されるようになっており、差分をためて日々のスナップショットを作成しています。それをもとに、検索ランキングの計算、アンカーテキストの抽出、ログ解析、ログをランキングにフィードバックする処理などにHadoopを利用しているとのことでした。
次に挙げられたのが地図検索。住所検索インデックスの生成や、ログデータの解析、ランキングへの反映にHadoopを利用しており、内部ではhBaseも活用されているとのことです。これからはクロールデータからお店の定休日や営業日を抽出できるようにしたいとの見通しが語られました。
他にも以下のようなさまざまな事例が語られました。
- 検索ログプラットフォーム(Hiveを独自に拡張して利用)
- レコメンデーションプラットフォームでは協調フィルタリング、クラスタからの距離計算に利用)
- 広告プラットフォーム(HiveやPigも利用)
- 検索サービス構築プラットフォーム(検索データ全般のストレージ、インデックス生成、スナップショット生成)
- 地域APIプラットフォーム(検索インデックス生成、バッチ処理全般)
- 研究所関係で類似画像検索エンジン(画像のクラスタリング計算にHadoopを利用、クリックグラフの分析にはhBaseを活用)
用途としていちばん多いのはログ解析、その次は検索関係、そして機械学習とのこと。Hadoopを使う事例のほとんどは、大量のデータを読み込んで解析する処理、大量の計算が必要なバッチ処理だそうです。
Hadoopの利用法としては、ストリーミングをベースにしたものにはJavaなど、アドホックに解析を行うものではPigやHiveを利用するとのこと。スケジューラはFairSchedulerを使うことが多いそうです。
標準で対応していないことをやりたい場合は、Hadoopにパッチをあてて利用しているとのこと。また、Hiveなども独自に拡張して利用しているそうです。そのようなことができた理由として、もともと全社で細かいルールが統一されていなかった分、柔軟に対応できたことが挙げられました。
Hadoopの課題
課題としてまず挙げられたのが、認証のしくみがないこと。ACLはあるが詐称可能で、 rm /
などでデータを削除されるおそれもある点が指摘されました。現状の対策としては、ゲートウェイサーバからのみアクセスを可能にしたり、ポートをiptableで遮断するなどの対応をとっているとのこと。今後はOwen氏も述べたケルベロス認証への期待するとのことです。
次に挙げられた課題はノードのフェイルオーバーです。「ネームノードはNFSにバックアップするのが標準でできるが、自動的に復旧するのが難しい」との現状ともに、0.21で追加される予定のバックアップノードへの期待が述べられました。
そして大量のデータを扱うHadoopでは帯域の使いすぎも問題に。特にほかのサービスと共用している場合、1Gぐらいのデータが内部で利用されることもあるそうで、対策としてはパッチをあてて帯域制限を設ける構想があるのことでした。
他にも、UNIXに依存しているためWindowsでのテストが面倒であること、全体的に動作不安定であることへの懸念が述べられました。