Hadoop+Embulk+Kibanaのデータ集計基盤によるデータ可視化と集計データを活用したキーワードサジェストの仕組み:Elasticsearch+Hadoopベースの大規模検索基盤大解剖(3)(1/3 ページ)
リクルートの事例を基に、大規模BtoCサービスに求められる検索基盤はどう構築されるものなのか、どんな技術が採用されているのか、運用はどうなっているのかなどについて解説する連載。今回は、ログデータの分析および可視化の基盤を構成する5つの主なOSSや集計データを活用したキーワードサジェストの事例を紹介します。
検索基盤を根本から支えるデータ集計基盤の裏側
今回の主な内容
リクルートの全社検索基盤「Qass」の事例を基に、大規模BtoCサービスに求められる検索基盤はどう構築されるものなのか、どんな技術が採用されているのか、運用はどうなっているのかなどについて解説する本連載。
初回の「リクルート全社検索基盤のアーキテクチャ、採用技術、開発体制はどうなっているのか」では全体的なアーキテクチャ、採用技術、開発体制について紹介しました。
検索システムを構築する際に、最も重要なのは、前回の「ElasticsearchとKuromojiを使った形態素解析とN-Gramによる検索の適合率と再現率の向上」でも紹介した、検索品質の向上です。Qassでは、いろいろなログを組み合わせて分析したり、ランキングデータに活用したりと、ログデータはシステムの中核となっています。
第3回の今回はQassの検索基盤を支えるデータ集計基盤と、それによるデータ可視化、集計したデータを生かす事例などを紹介します。また現在、これまでQassで利用していた可視化基盤の中核を新しいミドルウエアに切り替えようと考えているので、最後に紹介します。
ログデータの分析および可視化の基盤を構成する5つの主なOSS
Qassでは、現在以下のOSS(オープンソースソフトウエア)を活用して、ログデータの分析および可視化を行っています。図1は概要図です。
カスタマーが検索したキーワード、滞在時間、「どんな検索結果が表示されたか」「検索順位の何番目を選択したか」などのデータをログから回収します。回収したデータは、データ集計基盤で集計し、Kibanaを利用して可視化されます。集計されたデータは可視化するだけではなく、検索機能をサポートするサジェスト(後述)、誤字などを補正するスペラー、入力したワードに関連度が高いキーワードを表示させる関連検索や、辞書生成に活用されます。
Hadoop/Hadoop Streaming
現在のQassのHadoop環境は、MapReduce 1系のシステムで運用されています。主にHadoop Streamingを利用している理由には、MapReduce 2系への移行スケジュールが決まっていたため、ゼロからHadoop 1系で開発するメリットがあまりなかったこと、
また、Apache Hiveなどを利用すると、細かい処理が柔軟にできないことがあります。言語は、主にPythonやRuby、PHPを利用しています。
Kibana
Kibanaは、バックエンドにElasticsearchを利用した可視化ソフトウエアです。Qassでは定期的(1時間〜1日)に集めたデータを格納し、データを可視化しています。
Embulk
Kibana/Elasticsearchに格納するデータの入力元は、アクセスログやtsv、csv、jsonといった、さまざまなデータソースです。それらのデータソースに対応して、データを加工し、Amazon S3に出力して、その後Kibana/Elasticsearchに出力する。これらの一連のパイプラインにEmbulkを利用しています。
Embulkは、まだ登場して間もないOSSですが、Qassでは、サービスへの影響が少ないため、検証目的および、「ナレッジを蓄えておく」という観点から導入しています。インフラ構築・運用をメインで行う部隊でも、比較的使うことが容易なことも導入の一因です。
Nginx
Nginxは、カスタマーログを格納するために利用しています。Webアプリケーションサーバーとしての機能はありませんが、カスタマーのアクションごとにアクセスがあるので、それなりのトラフィックがあります。
fluentd
Nginxで出力したカスタマーログを定期的に回収します。回収したログは、HDFS(Hadoop Distributed File System)上に格納され、分析データの一つとして活用しています。
Kibanaでどのようなデータを可視化しているのか?
データを視覚的にモニタリングすることは、非常に重要です。可視化することで、サイトの属性や「どのようなキーワードが入力されているのか」がひと目で分かるようになります。導入しているサイトによって違いますが、主に以下のデータを可視化して分析を行っています。
キーワードランキング
「どのようなキーワードが入力されているか」「日々入力されているキーワードに変わったものがないか」を確認しています。「新しいキーワード、急上昇したキーワードに対して、検索品質に問題がなかったか」「ゼロマッチしたキーワードに対して、なぜ検索結果が表示されなかったのか」「ドキュメント自体が存在しないのか」などを調査したり、調査結果を辞書に反映したりすることで、検索品質を改善していきます。
ページビュー/ユニークユーザー
ページビューやユニークユーザーは、「サイトにどれだけの訪問があったのか」の目安になります。例えば、「キャンペーンなどの施策を行ったことで何回ぐらいのアクションが生まれたのか」が分かります。また、サイトの訪問ピーク時期が可視化されることで「いつサイトへのアクション誘導施策を行えばいいのか」が分かりやすくなります。
カスタマー分析
「カスタマーがサジェストの何番目を選択したのか」「検索結果の何番目がよく押されているのか」など確認します。
A/Bテスト
A/Bテストの指標を可視化することは、非常に重要です。
例えば、検索のランキングパラメーターを変更することで、「既存の検索結果と比較して、どのくらい効果が出たのか」「QPS(1秒に処理できるリクエスト数)などに影響はないか」など、いろいろな視点から分析を行います。有意差が出たところで、本番の環境にリリースします。
検索ランキングのチューニングは、トライ&エラーです。微妙なパラメーターの変更でアクション数に大きな影響が出るので、A/Bテストを行うことで、既存のランキングと新しいランキングで有意差があることを証明することが重要です。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- Hadoopは「難しい・遅い・使えない」? 越えられない壁がある理由と打開策を整理する
ブームだったHadoop。でも実際にはアーリーアダプター以外には、扱いにくくて普及が進まないのが現状だ。その課題に幾つかの解決策が出てきた。転換期を迎えるHadoopをめぐる状況を整理しよう。 - いまさら聞けないHadoopとテキストマイニング入門
Hadoopとは何かを解説し、実際にHadoopを使って大規模データを対象にしたテキストマイニングを行います。テキストマイニングを行うサンプルプログラムの作成を通じて、Hadoopの使い方や、どのように活用できるのかを解説します - 検索エンジンの常識をApache Solrで身につける
Hadoopをはじめ、Java言語を使って構築されることが多い「ビッグデータ」処理のためのフレームワーク/ライブラリを紹介しながら、大量データを活用するための技術の常識を身に付けていく連載 - 全文検索エンジン「Lucene.Net」を使う
サイト構築などで使用できる検索エンジンをVBで活用。日本語アナライザを用いたインデックス作成から検索アプリ作成まで。 - クックパッド、グリー、ぐるなび、CROOZは検索技術をどう使っているのか:検索技術を使うなら知ってないと損する6つのこと
ソーシャルアプリなど大規模Webサービスや企業内システムでも欠かせない検索技術のまとめ - Namazuによる全文検索システムの導入
サーバに集積した情報を再利用するには全文検索システムが必要だ。Namazuのインストールから設定、WordやExcelファイルのサポート方法、効果的な運用方法までを解説する