Elasticsearch勉強会

1,305 views

Published on

2016/01/07に開催されたElasticsearch勉強会で発表した資料になります。

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,305
On SlideShare
0
From Embeds
0
Number of Embeds
151
Actions
Shares
0
Downloads
14
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Elasticsearch勉強会

  1. 1. Copyright(C)2014 Recruit Technologies Co.,Ltd All rights reserved ここがツラいよElasticsearch ⾼高林林  貴仁/@tatakaba 2016/01/07
  2. 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)
  3. 3. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved Elastic{ON}ダイジェスト  ~∼  活⽤用例例  〜~
  4. 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. 5. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 5 全社検索索基盤:QASS 検索索結果をQass基盤へ集約 検索索に関連する情報を⼀一箇所に集積検 索索結果を横断的に専⾨門家が集約・分析 機械学習による検索索品質向上 ログを利利⽤用することで、 検索索品質の向上を⾏行行う 検索索結果分析基盤 検索索品質の継続的向上を⾏行行う全社基盤 フィードバックサイクル による検索索改善
  6. 6. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 6 QASSの全体構成 各サイトのindex (Doc数:数百万〜~数千万単位)
  7. 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. 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. 9. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 9 可視化 各サービスの定量量的な指標確認 l  コンバージョン l  Bucket(A/B)テスト l  ログ監視 l  ユーザログ 検索索結果の分析 検索索効果の可視化 サービスノード lo g サービスメトリクス の可視化 検索索結果分析基盤
  10. 10. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved Elastic{ON}ダイジェスト  ~∼  運⽤用編  〜~
  11. 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. 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. 13. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 13 SnapShotの活⽤用 Snapshot/Restore  APIをJenkinsで定期実⾏行行 実際の検索索結果を元に検索索改善を実施するクラスタを複製 データサイエンティストが⾃自由に検索索アルゴリズムを操作、確認可能 Snapshot  API Snapshots サービス⽤用クラスタ 検索索改善⽤用クラスタ Restore  API 本番同等の内容で 検索索改善結果を確認可能な 環境を⾃自動的に⽣生成 アルゴリズムの操作 結果の確認
  14. 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切切替 サービスノードサービスノード
  15. 15. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved Elastic{ON}ダイジェスト  ~∼  運⽤用時の注意点  〜~
  16. 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. 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. 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 説得材料料になる!
  19. 19. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved ここがツラいよElasticsearch
  20. 20. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 1:バージョンアップがツラいよ!!
  21. 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バージョンしかサポートして くれないらしいので、サポートをうける場合バージョンアップをする必要あり。
  22. 22. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 22 Elastic社が来⽇日した時に、 upgradeに関して質問した所・・・
  23. 23. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 23 Elastic社にきいた簡単なバージョンアップ法 VIP 既存クラスタ 新クラスタ 両⽅方へ書込 既存クラスタ 新クラスタ VIP LB reIndexが終わった段 階でSearch⽤用のLBを 切切り替えればいいよ! LB VIP VIP LBの向き 先を変更更オンプレの環境だと、クラスタの準備や VIPの切切替などの⾊色々⼤大変
  24. 24. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 2:Riverが⾮非推奨なったのツラいよ!!
  25. 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. 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に依存している
  27. 27. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 27 Riverを利利⽤用しない、新しい仕組みが必要
  28. 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. 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に動いた
  30. 30. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 3:フィールドに「.」が使えないのがツラいよ!!
  31. 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. 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
  33. 33. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 4:Replication-‐‑‒Async⾮非推奨がツラいよ!!
  34. 34. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 34 Replication-‐‑‒Async⾮非推奨がツラいよ!! p  1.5より、ReplicationのAysncが⾮非推奨(2.0では削除) p  全件更更新の際に更更新スピードを上げる為、Aysncを利利⽤用
  35. 35. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 5:ズレがツラいよ!!
  36. 36. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 36 ズレがツラいよ!! p  リロケート、リバランス、レプリカ⽣生成中に、primaryに更更新が⼊入ると documentにズレが発⽣生 p  レプリカ時の現象に関しては、2.xで解消済み(Issue⾒見見当たらず) p  Issueは、すでに上がっている(#13719、#14252)
  37. 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. 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ログから再実⾏行行
  39. 39. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 最後に
  40. 40. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 40 検索索関係のディスカッション p  Facebook上で「検索索技術研究会」というグループで検索索やビックデータ 系の技術を共有してますので、こちらも是⾮非参加してみてください。 h7ps://www.facebook.com/groups/search.tech/
  41. 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 リクルートテクノロジーズ  ブログ
  42. 42. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved 42 リクルートテクノロジーズでは、 Elasticsearchを始めとした、 “先端技術”を使って⼀一緒に仕事をする 仲間を募集しています!
  43. 43. 43
  44. 44. Copyright(C)2014  Recruit  Technologies  Co.,Ltd  All  rights  reserved ご清聴ありがとうございました!

×