統合ログ解析基盤と検索システム、そして機械学習の開発と運用を目的に、サイバーエージェントが秋葉原ダイビル内に開設したのが「Ameba Technology Laboratory」( 以下、ラボ)です。第28回 の前編に引き続き、ここで行われている業務内容や今後の展開について、ラボのメンバーに話を伺っていきます。
Ameba Technology Laboratoryのオフィスのようす
即座にGOサインが出た統合ログ解析基盤の開発
テキスト検索エンジンである「Lucene」 、そしてWeb検索エンジンの「Nutch」の開発において中心的な役割を果たしたDoug Cutting氏は、2006年に新たなプロジェクトを立ち上げます。それが現在、大規模データ分散処理技術として注目を集めている「Hadoop」でした。
このHadoopの大きな可能性に魅せられ、多くの企業がHadoopを自社のデータ解析に活用しはじめる中、2009年10月にはニューヨークで「Hadoop World」が、そしてその1ヵ月後には東京でも「Hadoop Conference 2009 Tokyo」と題したイベントが開かれます。ラボ研究室長の福田一郎氏はこのイベントに参加して、Clouderaが提供するHadoopディストリビューション「CDH」( Cloudera's Distribution including Apache Hadoop )や「Hive」を知ることになります。
その後、すぐに伊豆高原において開発合宿を実施し、サイバーエージェント内にも統合ログ解析基盤が必要だという結論に至りました。開発合宿から戻ってきた福田氏らは、サイバーエージェント 技術部門執行役員である長瀬慶重氏にその旨を相談したところ、即座にGOサインが出ました。こうしてサイバーエージェントにおける統合ログ解析基盤の開発がスタートしたのです。
そして翌2010年の7月には「Patriot」と名付けられた独自の統合ログ解析基盤第1弾をリリース、11月にはWebユーザインタフェースなどをリニューアルしたPatriotの第2弾となる「PAC2」が、そして、その1年後となる2011年11月からは、第3弾である「PAC3」に順次切り替えられています。
こうして統合ログ解析基盤の整備が進められている中、2011年4月1日に秋葉原ダイビル内に開設されたのが「Ameba Technology Laboratory」でした。このラボでは、統合ログ解析基盤と検索システム、機械学習についての開発と運用が行われています。大規模データを扱うのであれば一緒に開発したほうが効率的という判断から、それらをまとめる部署としてラボを立ち上げたと福田氏は説明します。
このように、基盤の開発からバージョンアップ、そして部署の立ち上げまで迅速に行われたことからも、同社においてログ解析がいかに重視されているかがわかるでしょう。
40台以上のサーバで構成されるサイバーエージェントのHadoop環境
Patriotは現在、マスタ系サーバとして3台、Worker系サーバとして2つのデータセンターにまたがって約40台のサーバが稼働しているとのこと。マスタ系はHadoopのNameNodeとJobTrackerのほか、設定情報の集中管理を行うZooKeeper、そしてHBaseのマスタノードであるHBaseMasterが動作しています。
一方、Worker系サーバで動いているのは、HadoopのDataNodeとTaskTracker、そしてHBaseのHBaseRegionServerです。さらに集計結果を表示するためのアプリケーションサーバ、バッチ処理やジョブ管理を行うためのサーバ、システム監視サーバ、アメーバなうなどとのサービス連携を行うためのAPIサーバが運用されています。Hadoop環境の構築に使われているのは、ClouderaがリリースしているHadoopディストリビューションであるCDH3u0(CDH3 Update 0 )です。
それでは、実際の集計はどのようなフローで行われているのでしょうか。まずアメーバピグや各種ゲームなどからログが転送され、ログクリーニングやHiveへのログデータインポートが行われ、さらに集計用のジョブがキックされます。これによりHadoop環境で集計作業を実施し、その結果をHBaseに出力します。こうして作成した集計データを独自のWebアプリケーションやHUE環境[1] として動作しているサーバが取り込み、サイバーエージェント社内のエンドユーザが閲覧する、という流れになっています(図1 ) 。
図1 Patriotの集計フロー
統合ログ解析基盤次期バージョンへの取り組み
Patriotについては、次期バージョンについても検討が進められています。次期バージョンでは、「 プロデューサーやマーケッター、アナリストによる解析の追加、ダッシュボードなどユーザがより効率的にデータを扱うための機能の強化」「 より深い統計解析の組み込み」「 解析のリアルタイム化」「 MapReduce 2.0への対応」といったことを中心に検討が行われています。
現在のPatriotが抱える課題について、鈴木俊裕氏は次のように説明します。
「データをHadoopに取り込むための処理など、Hadoopでの処理がボトルネックになって解析が遅延することがあります。その他、実際のデータの格納形式を意識しなければHadoopでも効率的に処理できないため、プロデューサーなど非エンジニア系の職種のユーザがうまくデータを扱えていないことも課題であると認識しています。また、現状ではデータ解析の追加を依頼ベースで行っていますが、依頼が殺到すると解析スピードを保証できません。この点も次期バージョンで対策を講じたいですね」( 鈴木氏)
その解決策としては、Scribe、あるいはFlumeを利用したリアルタイムなログ収集とログ形式の統一、エンジニア以外のユーザでも大規模データを扱えるしくみの開発が検討されています。
なお、ScribeはFacebookが開発したログデータ収集のためのソフトウェアであり、現在オープンソースとして公開されています。特徴は多数のサーバのログデータをリアルタイムに収集できること。一方のFlumeはClouderaによって開発されたもので、Scribeと同じく大量のログデータを集約することを目的としています。このいずれかを利用し、ログ収集にまつわる課題を解決することが模索されています。
エンジニアではないユーザが大規模データを効率的に扱うためのしくみをどのように実現するのかも興味深いところでしょう。Hadoopによるデータ解析では、基本的にMapReduceによる処理をJavaで記述する必要があるため、そのままでは開発言語を普段利用していないユーザには使えません。Hiveを利用することにより、HiveQLというSQLライクな言語でHadoop環境に蓄積されたデータを解析することも可能になりますが、やはり非エンジニア職種のユーザが利用するのは困難です。こうした課題をどのように解決するのか、今後の取り組みが注目されます。
集積された大量の情報を活用したデータ解析の実際
ラボでは統計解析処理の役割も担っています。ラボの和田計也氏は、具体的な統計解析作業として次のような例を挙げます。
「たとえばPatriotで集計した値を用い、アメーバ全体でDAU(Daily Active User )が高い日のモデル化を行っています。これで良好なモデルができたということは、DAUが上昇する特徴をうまく説明できたということになり、何らかの施策を講じる際に参考にできます。このモデル化は一般化線形混合モデル[2] などを用いて行い、パラメータの推定にはMCMC(Markov chain Monte Carlo methods :※3 )を用いることもあります。R言語はこうした統計解析モデルやアルゴリズムを使った解析を、少なくとも道具に困ることなく手軽に行えることから重宝しています」( 和田氏)
R言語とはオープンソースで開発されている統計解析向けのプログラミング言語であり、データ操作や計算のための機能が多数提供されているほか、解析結果からグラフィカルなプロットを作成するといったしくみも備えています。このR言語を利用して大量のログデータを解析、サイバーエージェントが提供している各種サービスの運営に役立つデータを提供しているというわけです。
こうしてR言語を利用して有用な解析結果が得られた場合には、Javaなどを利用して実サービスに組み込むと和田氏は話します。
和田計也氏
「アドホックな解析を、まずはR言語で迅速に行い、その解析方法が有効なことが明らかになった場合には、実サービスへその内容を組み込んでいきます。その際はJavaなどを利用してR言語をフルスクラッチで書きなおしています。R言語はメモリ使用量が大きく、実行速度が遅いという欠点があるため、大規模データを利用する際、実サービスに組み込むのは難しいためです。ただ、R言語は図表の作成が柔軟に行えるという利点があるので、今後は高度な図表作成に利用していきたいと考えています」( 和田氏)
なお、サイバーエージェントには解析すべきデータが大量にあり、その解析を迅速に進めるためにも統計分析ができる人材のニーズは高まっているとのこと。単に統計分析ができるだけでなく、その結果を用いて戦略的にマーケティングを考えられる人、あるいは統計分析ができてなおかつJavaなどの言語を使ったコーディングができるなど、システムにも強い人がより求められているようです。
Hadoopの登場によって大規模データ解析に注目が集まっていますが、あくまでHadoopはそのための基盤を提供しているだけであり、実際にどのようにデータを解析するかはユーザ側が考えなければなりません。こうした背景から、ほかの企業でもデータ解析ができる人材は強く求められています。今後、和田氏のようにさまざまなモデルを駆使してデータの解析ができ、さらにその結果を活用するためのプログラミングができる人材は、新たなエンジニア像の一つとして注目されるのではないでしょうか。
[2] 観測データに原因不明な個体差がある場合に、過分散が生じているデータに見られるパターンをうまく説明するための統計モデル。GLMM(Generalized Linear Mixed Model )ともいう。
着実に進められる検索エンジンとHadoop環境の連携
もうひとつ、ラボにおいて行われているのがAmebaの各サービスで使われる検索エンジンの開発です。この検索エンジンはHadoopと連携して動作するしくみになっていると、ラボの安田征弘氏は説明します。
安田征弘氏
「現状ですでに、ブログ記事を投稿するとHBaseにストアされるシステムが稼働しています。また、Scribeを利用し、クエリログをHDFS(Hadoop Distributed File System )にストアしています。このクエリログとクリックスルーログ、そして検索結果となるドキュメントをリアルタイムに収集することによって、トレンドを反映したワードサジェストや検索結果の提供、監視体制の精緻(せいち)化を実現したいと考えています」( 安田氏)
なお検索エンジンがHadoopと連携するメリットとして安田氏が挙げるのは、データサイズや計算量の負荷を軽減できることです。
「検索エンジンをHadoopと連携させることによって、インデックス作成やスパムの抽出、あるいはレコメンデーションといった処理において、データサイズや計算量がボトルネックとならずにシステムを構築できるのがメリットだと考えています。また、この基盤をベースとすることで、改善施策の開発サイクルを現実的なオーダーにできることも大きいですね」( 安田氏)
今後の検索機能の強化として、パーソナライズ化とスパム対応を進めているとのこと。すでに2012年2月からプロフィール検索とレコメンデーションシステムが連携してパーソナライズ化されているほか、コミュニティ検索のパーソナライズ化も予定していると話します。
研究成果のサービスへの還元が大きな目標
ラボの今後の展開として福田氏が説明するのは、「 オンライン化」と「大規模化」 、そして「高速化」です。
「これまで対応してきた処理を、今後はオンラインですばやく処理していくという目標がまずあります。そのため、今後のHadoopにはリアルタイム処理に強くなってほしいと期待しています。また、これまで小規模にしか行えなかった処理を大規模化していくことも目標のひとつです。Hadoop 0.23からMap/Reduce以外のアルゴリズムがサポートされているので、大規模処理の適用範囲が広がるのではないかと考えています。高速化については、たとえばGPUを使った処理などを考えています。Hadoopはサーバ単位で分散処理を行うことでスケールアウトを実現していますが、実際に処理を行うコアをスケールさせるという観点で考えれば、CPUに加えてGPUを利用するという方向性もあるのではないでしょうか」( 福田氏)
さらに、さまざまな分野の開発をラボで行うことによるシナジー効果にも期待しているそうです。その具体例の一つとして挙げられたのが、検索エンジンとHadoopの連携です。また、大規模なデータを安定して処理できるシステムを実現し、サービスに対して還元することも目標だと言います。こうした取り組みがサイバーエージェントの各サービスをどのように進化させるのでしょうか。今後の展開が楽しみです。
ラボで活躍するエンジニアの方々(左奥から善明晃由氏、和田計也氏、左手前から鈴木俊裕氏、福田一郎氏、安田征弘氏)
サイバーエージェント公式エンジニアブログ
URL:http://ameblo.jp/principia-ca
エンジニアの生の声を週替わりでお届け中!