Más contenido relacionado La actualidad más candente (20) Similar a Elasticsearch勉強会 (20) Elasticsearch勉強会2. Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved
2
⾃自⼰己紹介
⾼高林林 貴仁 / @tatakaba
2011 〜~ リクルート⼊入社
APソリューショングループ
Ø 検索索基盤
Ø データ解析
Ø DWHとCEP
Ø Webアプリケーション開発
Ø R&D(ウェアラブル端末等)
それ以前
Ø 主に検索索システム担当
Ø web,地図,local検索索等
Ø WPO(Web Performance
Optimization)
4. Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved
4
Elasticsearchを活⽤用したサービス基盤
全社プッシュ通知基盤
l リアルタイムな検索索要件
l Dynamoの補完
検索索
条件抽出
データ取得
全社検索索基盤
l サイト内検索索
l キーワードサジェスト
l スペラー
l 関連検索索ワード
可視化
l UU
l コンバージョン
l ログ
5. Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved
5
全社検索索基盤:QASS
検索索結果をQass基盤へ集約
検索索に関連する情報を⼀一箇所に集積検
索索結果を横断的に専⾨門家が集約・分析
機械学習による検索索品質向上
ログを利利⽤用することで、
検索索品質の向上を⾏行行う
検索索結果分析基盤
検索索品質の継続的向上を⾏行行う全社基盤
フィードバックサイクル
による検索索改善
7. Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved
7
全社プッシュ通知基盤:Pusna-‐‑‒RS
p スマートフォンなどに簡単に通知を送る事ができる仕組み
GCM
Google Cloud Messaging
Push!
Push!
APNs
Apple Push Notification Service
8. Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved
8
Pusna-‐‑‒RSの全体構成
リクルート
8
デバイス管理理
プッシュ配信管理理
DynamoDB Elasticsearch
登録API SQS 登録worker
配信worker SQS
操作⽤用WebUI
管理理API
配信担当者
データ基盤
APNs
GCM
事業サーバ
デバイス情報や配信情報の
実データの索索引として利利⽤用
(Doc数:億単位)
9. Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved
9
可視化
各サービスの定量量的な指標確認
l コンバージョン
l Bucket(A/B)テスト
l ログ監視
l ユーザログ
検索索結果の分析
検索索効果の可視化
サービスノード
lo
g
サービスメトリクス
の可視化
検索索結果分析基盤
11. Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved
11
Elasticsearch運⽤用編
Plugin機構の利利⽤用
動的ロード
A/Bテスト
Snapshot機構の利利⽤用
オンラインバックアップ
本番環境の複製
環境に合わせたIndex作成
AWS(クラウド上)環境
オンプレミス環境
Qass
Plugin
ICU
Plugin Kuromoji
Plugin
…
Plugin
Alias Alias
12. Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved
12
独⾃自プラグイン
Qass独⾃自のPlugin機構
独⾃自の機構により無停⽌止のモジュール更更新
サイト運営に影響を与えず検索索改善
⾼高速な検索索軸でのA/Bテスト可能な基盤を整備
各サービスサイト Qass Plugin
検索索チーム
検索索ロジックA v1
検索索ロジックB v1 検索索ロジックB v2
検索索チームで動的切切替
13. Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved
13
SnapShotの活⽤用
Snapshot/Restore APIをJenkinsで定期実⾏行行
実際の検索索結果を元に検索索改善を実施するクラスタを複製
データサイエンティストが⾃自由に検索索アルゴリズムを操作、確認可能
Snapshot API
Snapshots
サービス⽤用クラスタ
検索索改善⽤用クラスタ
Restore API
本番同等の内容で
検索索改善結果を確認可能な
環境を⾃自動的に⽣生成
アルゴリズムの操作
結果の確認
14. Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved
14
環境に合わせたIndex作成
環境によって異異なるIndex作成⽅方法を採⽤用
どのような環境でもサービス影響出さず安全な更更新が可能
AWS環境
サービス⽤用クラスタ
(Blue⾯面)
サービス⽤用クラスタ
(Green⾯面)
Blue-‐‑‒Green Deployでク
ラスタ切切替
オンプレミス環境
Index
A
Index
B
Doc
Alias Alias
River:差分更更新
Aliasで
Index切切替
サービスノードサービスノード
16. Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved
16
バージョンアップ
Qass Pusna 可視化
バージョン
0.9
1.4
1.5 1.5
1.7
2.1
最新バージョンを
利利⽤用するようにしているが、
リリースサイクルが早く
追いつききれていない
バージョンアップの際はどのような対応が必要か?
17. Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved
17
バージョンアップ
0.9 -‐‑‒> 1.7へのバージョンアップ
2バージョンのクラスタを⽤用意してリアルタイムで移⾏行行
v0.9 クラスタ v1.7 クラスタ
両⽅方へ書込
v0.9 クラスタ v1.7 クラスタ
⽚片バージョンを切切り離離し
APIやレスポンスが変わっているため、
そのままの移⾏行行は不不可能
18. Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved
18
リクルートのelasticSearchの活⽤用
l 検索索基盤として、Pluginを活⽤用した最適化
l QueryのRewrite
l 重み付けsort
l SolrのリクエストをElasticsearchで受け付けれる
l Dynamoの補完とリアルタイム性
l DyanamoDBが苦⼿手なデータ検索索の補完
l リアルタイム性を利利⽤用したPush通知
l データの可視化
l データをグラフで可視化するとわかりやすい!
l 説得材料料になる!
21. Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved
21
バージョンアップがツラいよ!!
p 1.0.0(2014/02/12)がリリース以降降、頻繁にupdateが⾏行行われている。
最新版は、2.1.1
p サービスをバージョンアップを⾏行行う場合、現⾏行行で利利⽤用しているAPI正
常に動作するか検証する必要があるため、バージョンアップにコスト
がかかる。
p APIも⼤大幅に変更更される場合あり
p 各バージョンのPluginを⽤用意しないとならない
p 2.x以降降は、集計処理理(Aggregation)機能が強化されたイメージが強
いので、検索索エンジンとしては、必要な機能をみたいしている為、
bugFix以外では、2.x系にバージョンアップをするモチベーションが
上がらない。
ただし、Elasticのサポートが必要な場合は、3バージョンしかサポートして
くれないらしいので、サポートをうける場合バージョンアップをする必要あり。
23. Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved
23
Elastic社にきいた簡単なバージョンアップ法
VIP
既存クラスタ 新クラスタ
両⽅方へ書込
既存クラスタ 新クラスタ
VIP
LB reIndexが終わった段
階でSearch⽤用のLBを
切切り替えればいいよ!
LB
VIP VIP
LBの向き
先を変更更オンプレの環境だと、クラスタの準備や
VIPの切切替などの⾊色々⼤大変
25. Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved
25
Riverが⾮非推奨なったのツラいよ!!
p 1.5.xからriverは、⾮非推奨となり、2.0からは、riverは削除されます。
h7ps://www.elas>c.co/blog/depreca>ng-‐rivers
26. Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved
26
検索索基盤:QassでのRiver利利⽤用事例例
サイト
検索索
サーバー
Web server
Batch server
NFS
riverdata.ulogid
Admin
1. インデックス作成
3. インデックス作成
Qass Client
2. インデックス作成リクエスト
4. インデクシング
Indexer
5. インデクシングリクエスト
4. update_̲log 出⼒力力(file put)
5. update_̲log を読んで、
データを更更新(nfs mount)
Update log file:/YYYMMDD/${ulogid}.qass.gz
mount mount
Indexの作成が、Riverに依存している
28. Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved
28
現在、検討中の案
p River同等の処理理を⾏行行うプロセスを⽴立立ち上げて、Zookeeperにて、管理理
p その他にもconsul,Kafka+Logstashなどの実装も検討
Server1
river代替
process
zookeeper
Server2
river代替
process
zookeeper
Server3
river代替
process
zookeeper
共有設定
どのサー
バーで
最後に何
時、動作
したのか
を保持す
る
Server1でうごく
29. Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved
29
検討中の案
Zookeeperが起動プロセスを管理理しているので
同時起動で重複書き込みのリスクが減らせる
Server1
river代替
process
zookeeper
Server2
river代替
process
zookeeper
Server3
river代替
process
zookeeper
共有設定
最後に動いた時間から、
数分経ったので、
どちらかが動く
Server3で動く:20151110_̲17000000に動いた
31. Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved
31
フィールドに「.」が使えないのがツラいよ!!
p 2.xから「.」をフィールドが利利⽤用できない
p index/mapper/object/ObjectMapper.javaにある、parseProperties
メソッドで、FileldNameをチェックしてるのでelasticsearchが⽴立立ち
上がらない。
p 1.x系からUpgradeする際には、elasticsearch-‐‑‒migrationプラグイン
で確認すること
h"ps://github.com/elas3c/elas3csearch-‐migra3on
32. Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved
32
p 昔(Solr)から、Fieldの命名規則に、「.」を付けているサービスが多い
p アプリのフレームワークにも依存している部分が⼤大きいため、影響範囲が
⼤大きい
フィールドに「.」が使えないのがツラいよ!!
h7ps://www.elas>c.co/guide/en/elas>csearch/reference/current/
breaking_20_mapping_changes.html
36. Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved
36
ズレがツラいよ!!
p リロケート、リバランス、レプリカ⽣生成中に、primaryに更更新が⼊入ると
documentにズレが発⽣生
p レプリカ時の現象に関しては、2.xで解消済み(Issue⾒見見当たらず)
p Issueは、すでに上がっている(#13719、#14252)
37. Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved
37
①セグメントファイルのコピー
②トランザクションのコピー
Shardの移動(relocate,rebalance)の発⽣生時
セグメントファイルを新しいnodeにコピー後、トランザクションファイルがコピー
されて、追っかけ更更新(トランザクションの読み込み)が始まり、shardの同期が⼊入る
が、更更新(add,delete,update)が⼊入った場合にドキュメントに差異異が発⽣生!!
ただし、status的にはgreenな為、ドキュメント数で確認するしかない。
更更新(UPDATE,DELETE,INSERT)が⼊入ると・・・。
途中のデータが⽋欠損している場合がある。(リアルタイム更更新等)
38. Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved
38
対策案
サイト
検索索
サーバー
Web server
Batch server
NFS
riverdata.ulogid
Admin
1. インデックス作成
3. インデックス作成
Qass Client
2. インデックス作成リクエスト
4. インデクシング
Indexer
5. インデクシングリクエスト
4. update_̲log 出⼒力力(file put)
5. update_̲log を読んで、
データを更更新(nfs mount)
Update log file:/YYYMMDD/${ulogid}.qass.gz
mount mount
Doucumet数のズレを監視して、ズレが
あれば過去のupdateログから再実⾏行行
40. Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved
40
検索索関係のディスカッション
p Facebook上で「検索索技術研究会」というグループで検索索やビックデータ
系の技術を共有してますので、こちらも是⾮非参加してみてください。
h7ps://www.facebook.com/groups/search.tech/
41. Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved
41
参考資料料
p Qass
p Elasticsearch+Hadoopベースの⼤大規模検索索基盤⼤大解剖
p Pusna-‐‑‒RS
p ⼤大規模プッシュ通知基盤⼤大解剖
p リクルートテクノロジーズについて
Qass
pusna-‐‑‒rs
リクルートテクノロジーズ ブログ