Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Search Solutions on AWS

5,044 views

Published on

IVS CTO Night and Day powered by AWS 2016 WinterのMorning Sessionにおける検索技術に関する資料です

Published in: Technology
  • D0WNL0AD FULL ▶ ▶ ▶ ▶ http://1lite.top/ZuETP ◀ ◀ ◀ ◀
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Search Solutions on AWS

  1. 1. Search Solutions on AWS
  2. 2. Name • Eiji Shinohara / 篠原 英治 Social • Twitter: @shinodogg • Blog: https://shinodogg.com AWS Solutions Architect • Area of Depth • AWS Search Services • Digital Advertising Technology
  3. 3. AWSの検索サービス • Amazon CloudSearch • https://aws.amazon.com/jp/cloudsearch/ • Amazon Elasticsearch Service • https://aws.amazon.com/jp/elasticsearch-service/ Amazon CloudSearch Amazon Elasticsearch Service
  4. 4. A9.com → The team joins AWS • CloudSearch/Amazon ES の開発拠点はパロアルト
  5. 5. Amazon CloudSearch • ⾃動拡張するフルマネージド検索サービス • 2011 API • A9が作ったプロプライエタリな検索エンジン • Amazon.comで使っているもの • 東京リージョンは対象外 • 2013 API • on top of Apache Solr • 多⾔語対応 • ⽇本語の形態素解析、n-gram、カスタム辞書にも対応 • 東京リージョンは2014年3⽉からサービス提供中
  6. 6. Amazon CloudSearch • Auto Scaling / Auto Partitining Auto Partitioning Auto Scaling
  7. 7. Amazon Elasticsearch Service • Elasticsearchのマネージドサービス • AWSクラウド上で Elasticsearch を簡単に構築可能 • Elasticsearchの分散/スケーリング機能はクラウドと相性が良い • インスタンスタイプと台数を選択するだけでプロビジョニング • デフォルトでKibanaがインストールされる • Management ConsoleにてURLをクリックするだけで直ぐ利⽤可能 • 使った分だけの従量課⾦ • ノードに利⽤するEC2の時間課⾦ • EBSボリュームを使った場合はEBSの料⾦ • 略称はAmazon ES
  8. 8. AWS Podcast •Episode #145 | September 5, 2016 • Jon Handler: Principal Search Services Solutions Architect • Elasticsearchとは? • Elasticsearchのどういうところが良い? • Amazon Elasticsearch Serviceとは? • Eliminate undifferenciated heavy lifting • Easy to manage, operate, and scale • Security • Monitoring • Just a few clicks to deploy
  9. 9. AWS re:Invent 2016 • Real-Time Data Exploration and Analytics with Amazon Elasticsearch Service and Kibana(BDM302) https://www.youtube.com/watch?v=R40N9eZTaAA
  10. 10. AWS re:Invent 2016 • Real-Time Data Exploration and Analytics with Amazon Elasticsearch Service and Kibana(BDM302) • Apacheのログを使ってend-to-endでログ解析する⽅法を紹介 • Amazon Kinesis Firehoseを使ってAmazon ESクラスタにデータを 投⼊ • インスタンスタイプ, ストレージオプション, shard数, インデック スのローテーション等のベスト・プラクティスを紹介 • Kibanaのセットアップおよびカスタムダッシュボードウィジェット の作成⽅法 • Deep Dive: Elasticsearch Query DSLやcustom/ad-hocレポート の⽣成⽅法の紹介 等
  11. 11. テラバイト級のログデータをどうしていますか?
  12. 12. 今回のセッションでは以下のような構成をご紹介します data source Amazon Kinesis Firehose Amazon Elasticsearch Service Kibana 123 4 Query DSL 5
  13. 13. 構築したアウトプットのイメージ
  14. 14. Shard 1 Shard 2 Shard 3 Shard 4 index は document の集合。各ドキュメント は分割された shard に配置されます Documents Index ID ID ID ID ID ID ID ID ID ID ID ID ID ID ID ID ... Indexing, compression
  15. 15. index のクラスタへのデプロイメント • Index 1 – Shard 1 – Shard 2 – Shard 3 • Index 2 – Shard 1 – Shard 2 – Shard 3 Amazon ES cluster 1 2 3 1 2 3 1 2 3 1 2 3 Primary Replica 1 3 3 1 Instance 1, Master 2 1 1 2 Instance 2 3 2 2 3 Instance 3
  16. 16. How many instances? • index のサイズは、元の document の集合と同じになる 場合が多い ※トークナイズの⽅法等にもよる • Indexを複製する場合は倍のサイズ • ストレージのサイジング • ローカルのエフェメラルディスク、もしくは、インス タンスごとに512GBのAmazon Elastic Block Store(EBS)を選択 • 例: 2TBの元データの⽬安 • 512GBのEBSでIndexを複製する場合は8インスタン ス • i2.2xlargeのインデックスタイプを選択する場合は ローカルのエフェメラルディスクを使えば4ノードで も事⾜りる → カジュアルな⽤途向き
  17. 17. dedicated master ノードがないクラスタ Amazon ES cluster 1 3 3 1 Instance 1, Master 2 1 1 2 Instance 2 3 2 2 3 Instance 3
  18. 18. dedicated masterノードのあるクラスタ Amazon ES cluster 1 3 3 1 Instance 1 2 1 1 2 Instance 2 3 2 2 3 Instance 3Dedicated master nodes Data nodes: queries and updates
  19. 19. Zone awareness を有効にした場合のクラスタ Amazon ES cluster 1 3 Instance 1 2 1 2 Instance 2 3 2 1 Instance 3 Availability Zone 1 Availability Zone 2 2 1 Instance 4 3 3
  20. 20. Amazon ES クラスタ構築のベストプラクティス • Data nodes の数 = 必要なストレージ量 / ノード毎のストレージ • GP2 EBS volume の活⽤ • 本番環境には 3 dedicated master ノード • Zone Awareness の有効化
  21. 21. Amazon Elasticsearch Service overview Amazon Route 53 Elastic Load Balancing AWS IAM Amazon CloudWatch Elasticsearch API AWS CloudTrail
  22. 22. Amazon Elasticsearch Service を使う利点 Easy to use Open-source compatible Secure Highly available AWS integrated Scalable
  23. 23. Kinesis Firehose
  24. 24. Kinesis Firehose overview • Delivery Stream: AWSのリソースを活⽤ • Destination: Amazon Redshift Amazon S3 Amazon ES • Record: レコードをストリームにプッシュ 設定したデスティネーションに データをお届け
  25. 25. Kinesis Firehose の デリバリーアーキテクチャ intermediate Amazon S3 bucket backup S3 bucket source records data source source records Amazon Elasticsearch Service Firehose delivery stream delivery
  26. 26. [Coming soon!] Kinensis Firehose のデリバリーアーキテクチャ with transformations intermediate Amazon S3 bucket backup S3 bucket source records data source source records Amazon Elasticsearch Service Firehose delivery stream transformed records transformed records transformation failure delivery failure ※指定したLambda Functionで変換
  27. 27. Kinesis Firehose features for ingest Serverless scale Error handling S3 Backup
  28. 28. Kinesis Firehose stream の作成
  29. 29. Kinesis Firehose の ベストプラクティス • レイテンシーとトータルなスループットのバランスでbuffer size を決める スループットを上げるには⼩さいbuffer sizeが有利だが、コン カレンシーに注意が必要 • index をローテーションさせる よくあるのは Daily でのローテーション • デフォルトのストリームの制限 stream limits: 2,000 transactions/second 5,000 records/second, and 5 MB/second
  30. 30. template および data のアップロード
  31. 31. Shard数 = index サイズ / 各ノードのサイズ index を作成する際にShard数を設定 It dependsであるし、議論があるところ ではあるが”Less is more” Write: 該当ShardのノードのCPUを使う Read: 全てのShardのノードのCPUを使う 同時並⾏で複数のShardに多数の書き込 むを⾏う場合は、クラスタ全体のCPUリ ソースを考慮すること Amazon ES cluster 1 3 3 1 Instance 1, Master 2 1 1 2 Instance 2 3 2 2 3 Instance 3
  32. 32. Mapping でデータのインデクシングをコントロール • Kibanaを使った可視化 は”not_analyzed”なテキストで良い 例えば、IPアドレスはドットで分割する必要ない • Mappingのテンプレートは_template APIを使って定義 全ての新しいインデックスに適⽤される • テンプレートはShard数の設定にも⽤ いる 0 delete 1,3,5 1 get 2,3,4,6 2 head 1,7,9 3 post 2,8 4 put 24 Index Writer
  33. 33. Log データを検索ドキュメントに変換 d104.aa.net - - [01/Jul/1995:00:00:15 -0400] "GET /images/KSC-logosmall.gif HTTP/1.0" 200 1204 {"status": 200, "ident": "-", "@timestamp": "1995-07-01T00:00:05", "request": "/images/KSC-logosmall.gif HTTP/1.0", "auth": "-", "host": "d104.aa.net", "verb": "GET", "time": "01/Jul/1995:00:00:15 -0400", "size": 1204}
  34. 34. send_data メソッド
  35. 35. Kinesis FirehoseへのLogデータ送信
  36. 36. Kinesis FirehoseへのLogデータ送信の ベストプラクティス • セッティング⽤にテンプレートを使う • Shard数を設定する • 1つのノードに1つのアクティブなshard • 可視化のユースケースでは全てのフィールドは”not_analyzed“で良い
  37. 37. Analyze Apache Web Logs
  38. 38. Amazon ES aggregations • Buckets – ドキュメントをグループ化する際の項⽬ • Metrics – 集計後のBucketsのデータ Bucket: time Metric:count
  39. 39. Kibanaで可視化する際のベストプラクティス • フィールドが not_analyzed であること • 可視化はbucketsおよびmetricsベース • Data Histogramには最初に x-axis を選択
  40. 40. Run Elasticsearch in the AWS cloud with Amazon Elasticsearch Service Use Kinesis Firehose to ingest data simply Kibana for monitoring, Elasticsearch queries for deeper analysisAmazon Elasticsearch Service
  41. 41. Lucene/Solr Revolution 2016 • PlayStation and Lucene - Indexing 1M documents per second Alexander Filipchik, Sony Interactive Entertainment http://www.slideshare.net/lucidworks/playstation-and-lucene-indexing-1m-documents-per- second-presented-by-alexander-filipchik-sony-interactive-entertainment
  42. 42. Lucene/Solr Revolution 2016 • SearchHub - LucidWorks Fusion: Solr & Spark http://www.slideshare.net/lucidworks/searchhub-how-to-spend-your-summer-keeping-it-real- presented-by-grant-ingersoll-lucidworks
  43. 43. Elastic{on} TOUR 東京2016 • Elasticsearch 5 / Kibana 5 • 2016年12⽉15⽇ • 私は抽選の結果、⾒送りで参加できない為、是⾮シェアやフィードバックを〜 https://www.elastic.co/jp/elasticon/tour/2016/tokyo

×