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.

20190523 shtykh in_memcompmeetup_upload

In-Memory Computing Meetup Vol.1

Related Books

Free with a 30 day trial from Scribd

See all
  • Be the first to comment

  • Be the first to like this

20190523 shtykh in_memcompmeetup_upload

  1. 1. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 2019年5月23日 Roman Shtykh ヤフー株式会社 Apache Igniteインメモリーデータ 処理プラットフォーム 特徴&利活用
  2. 2. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 自己紹介 • エンジニア @ ヤフー • PMC & Committer @ Apache Ignite • Committer @ Apache RocketMQ, MyBatis • twitter: @rshtykh
  3. 3. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. Agenda 3 • Apache Igniteの紹介 • Durable Memory Architecture データストレージ • Distributed Data データ配置 • Distributed Processing データ処理 • 売れた商品をリアルタイムで取得するサービスの刷新 • 広告配信システムの負荷最適化 • Q&A
  4. 4. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. Agenda 4 • Apache Igniteの紹介 • Durable Memory Architecture データストレージ • Distributed Data データ配置 • Distributed Processing データ処理 • 売れた商品をリアルタイムで取得するサービスの刷新 • 広告配信システムの負荷最適化 • Q&A
  5. 5. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. Apache Ignite • メモリを中心に据えた分散 ・データベース ・キャッシュ ・データ処理(コンピュート) プラットフォーム https://apacheignite.readme.io
  6. 6. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. Apache Ignite 高性能分散インメモリープラットフォーム • スケーラビリティ・高パフォーマンス・耐障害性 • データは複数マシーンに分散される • 動的なノード(リソース)追加・削除 • リニアなスケーラビリティ • 冗長化(耐障害性) • SPOFはない • 低レイテンシー • 並列処理(高パフォーマンス) • データ局所性尊重
  7. 7. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. Apache Ignite 多機能分散インメモリープラットフォーム Data Grid ComputeGrid Service Grid Data Ingestion/ Streaming Distributed SQL Messaging & Events Distributed Data Structures RDBMS Integration Spark Integration Native Persistence In-memory MapReduce Machine Learning In-memory File System Java/C++/.NET REST/Redis/ Memcached
  8. 8. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. Durable Memory Architecture データストレージ 8
  9. 9. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. Durable Memory ストレージ層 • Memory-first • 全データはディスクに保存、そのサブセットをメモリに格 納する • RAMにあるデータは必ずディスクにも存在する • Off-heap • デフォルト • 各ノードでメモリを大きくとりたい • Java full GCを避ける • On-heap • Swap • HDD, SSD等を永続記化レイヤに • DBへのwrite-through/write-backも可能 durable memory
  10. 10. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. Durable Memory データの形式 10 Java Object Binary Object Data Page Index
  11. 11. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. Durable Memory Structure 11
  12. 12. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. Apache Ignite Durable Memory • RAMはキャッシュレイヤーではなく、ストレージである • 永続化(ディスク)OFF: • 分散インメモリーデータベース・データグリッド • 永続化(ディスク) ON: • 分散データベース https://ignite.apache.or g
  13. 13. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. Distributed Data データ配置 13
  14. 14. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. クライアント&サーバー • サーバーノード • データやコンピュート処理のコンテナ • スタンドアローンプロセスとして起動 • クライアントノード • クラスターへの エントリーポイント • アプリのなかから実行 14 https://ignite.apache.or g
  15. 15. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. クラスター内のデータ配置 • 高スケーラビリティ • データ更新のコストは低い https://apacheignite.readme.io/docs/cache-modes
  16. 16. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. クラスター内のデータ配置 • 可用性重視 • データ更新のコストは高い • いつ利用する? • READリクェストは80%以上 • 且つデータセットは大きくない https://apacheignite.readme.io/docs/cache-modes
  17. 17. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. Distributed Processing データ処理 17
  18. 18. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. Java & SQL • Key/value API • JCache (JSR 107) • SQL • ANSI-99準拠 • ACID compliance • メモリやディスク
  19. 19. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 非JVM言語・プロトコルサポート • C++ & C# • Thin clients • Node.js • PHP • Python • C++ • Java • Memcached (binary) • REST API • Redis (現時点STRING処理のみ) • PDO (PHP Data Objects)
  20. 20. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. Apache Ignite Compute • MapReduce • ロードバランス • クラスター内、ジョブのバランシング • ステートチェックポイント • ジョブの中間ステートを保存(ノードダウンの場合、処理の安全性向上) • 自動チェックフェールオバ • (処理再開のため)他のノードへの処理転送 • Collocated処理
  21. 21. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. Apache Ignite Collocated処理 • データ並列性 http://www.cs.umd.edu/class/fall2013/cmsc433/lectures/concurrency- basics.pdf
  22. 22. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. Apache Ignite Collocated処理 • 従来、処理はクライアントに転送されクライアント側で 行われる • データベース→クライアントのデータ移動の方式は スケールしない • 一方、Igniteではcollocated処理が可能なため、 データ移動の極小化ができる
  23. 23. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. Apache Ignite Collocated処理 Data 1 Data Node Data Node Data 2 Processing Node Client Node Data Node Data Node 1 1 2 3 3 2 1. リクェスト 2. 遠隔ノードからデータ取得 3. 取得データセットの処理 Client-Server処理 Co-located処理 1. リクェスト 2. データノードにて処理 3. その結果のマージ
  24. 24. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. Apache Ignite Collocated処理 • Collocated Processing • データとデータ • 同じクエリー内にアクセスされる場合 • 処理とデータ
  25. 25. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. Affinityを活用すれば • 1ノード • レイテンシー: 668 μs
  26. 26. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. Why Apache Ignite? • RDBMSにない • 高スケーラビリティ • 処理速度(メモリー中心アーキテクチャ) • NoSQLストアにない • SQL • ACIDトランザクション • +Co-located処理 • メモリ利用時のデータ容量のリミット • インメモリDBにない • ネイティブ永続化 • Apache Ignite活用の価値 • RDBMSの機能(整合性、スキーマの柔軟性など)やBASEシステムの パフォーマンスの最強組み合わせ • Co-located処理の活用 → 高パフォーマンスシステム実現
  27. 27. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. Ignite利用イメージ 27 SQL TensorFlow
  28. 28. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. Ignite利用イメージ Ignite as a Cache • 負荷軽減 • READキャッシュ • キャッシュのみなら、勿体無い • +分散コンピュート RDBMS scaling? Read-thru Write-thru Write-behind PUT/GET SQL利用の場合、データロードが必要
  29. 29. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. Ignite利用イメージ Ignite as a DBMS • 永続化 ○ • SQL ○ • 分散join • Transactions ○ • 分散コンピュート ○ PUT/GET SQL LFS
  30. 30. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. Agenda 30 • Apache Igniteの紹介 • Durable Memory Architecture データストレージ • Distributed Data データ配置 • Distributed Processing データ処理 • 売れた商品をリアルタイムで取得するサービスの刷新 • 広告配信システムの負荷最適化 • Q&A
  31. 31. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 売れた商品をリアルタイムで取得 31 • レガシーシステム構成 MySQL + memcached • 課題 • 長期間キャッシュ => データの陳腐化 • データやクエリーの増加によるデータベースの性能向上が必要
  32. 32. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. なぜIgnite候補にあがる? 32 • スケールアウトできるクラスター構成 • 容易なノード追加・削除が可能 • インメモリー • 性能向上が期待できる • SQL機能を持つ • 既存のクエリーには大きな変更なし • 多言語サポート • Node.js, Python, PHP, C#, Java thinクライアント https://ignite.apache.org/features/streaming.html
  33. 33. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. Apache Ignite SQL 33 • DDL & DML • 分散JOIN collocation • トランザクション MVCC (snapshot isolation) • index in RAM/disk https://ignite.apache.org/features/sql.htmlCREATE TABLE City ( id LONG PRIMARY KEY, name VARCHAR) WITH "template=replicated"
  34. 34. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. Apache Ignite SQL 分散(co-located)JOIN 1 2 2 3 Ignite Node Canada Toronto Ottawa Montreal Calgary Ignite Node India Mumbai New Delhi 1. リクェスト 2. ローカルデータに対する処理 3. その結果のマージ https://ignite.apache.or g
  35. 35. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 売れた商品をリアルタイムで取得 35 • システム構成 Ignite利用 • 5億レコード以上 • 20ノード • x000req/sec • インメモリーモード +バックアップの設定
  36. 36. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 売れた商品をリアルタイムで取得 • 「いい買物の日」トラフィックの半分 • ピーク時にx000rps捌けて CPU、ネットワークなどのリソース消費は数 パーセントしかない
  37. 37. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 売れた商品をリアルタイムで取得 37 • パフォーマンス面の改善 • 前段にmemcachedによる長期間のキャッシュを 取り除けた • 性能的な余裕ができ、キャパシティの問題でAPI利 用を断ってたサービスも提供できるようになった • 検索条件の追加など、性能面から機能制限を掛け ていたものを開放できる目処が立った • Node.jsクライアント早期導入 • コミュニティ貢献
  38. 38. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. Agenda 38 • Apache Igniteの紹介 • Durable Memory Architecture データストレージ • Distributed Data データ配置 • Distributed Processing データ処理 • 売れた商品をリアルタイムで取得するサービスの刷新 • 広告配信システムの負荷最適化 • Q&A
  39. 39. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 広告配信システムの負荷最適化 39 • 広告配信システムの負荷に応じて、 システムパラメーターを自動的に調節する。 • Ignite活用 • リアルタイム処理 • グローバルデータビュー • ストリーム処理PF + KVSとして用いる
  40. 40. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 広告配信システムの負荷最適化 40 • 投入されるデータによって、Igniteに格納され て いるデータに対するリアルタイム処理 Kafka 01101010
  41. 41. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 広告配信システムの負荷最適化 41 • 投入されるデータによって、Igniteに格納され て いるデータに対するリアルタイム処理 Kafka 01101010
  42. 42. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 広告配信システムの負荷最適化 42 • 投入されるデータによって、Igniteに格納され て いるデータに対するリアルタイム処理 Kafka 01101010 http
  43. 43. Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. Q&A 43

×