Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
Kafkaを活用するための
ストリーム処理の基本
2016/05/31 Apache Kafka Meetup Japan #1
木村宗太郎(@kimutansk)
https://www.flickr.com/photos/gruenewie...
自己紹介
• 木村 宗太郎(Sotaro Kimura)
• ビッグデータ界隈に生息する何でも屋
• バックエンドからフロントエンド、技術検証から運用、
ドキュメント書きまで色々
• Kafkaとの出会いは3年程前に
Stormとの連携を試した...
アジェンダ
1. Kafkaのデータ活用モデル
2. ストリーム処理とは?
3. ストリーム処理プロダクト概況
4. ストリーム処理で考えるべきこと
2
3
1. Kafkaのデータ活用モデル
• Kafkaのデータの用い方は大きく2つある。
1. 一気にまとめて取得するモデル
2. 常時取得し続けるモデル
4
1. Kafkaのデータ活用モデル
1. 一気にまとめて取得するモデル
Log
Log
Log
Log
Log
Log
Log
Log Log
Log
Log
Log
Log
Log
Log
5
1. Kafkaのデータ活用モデル
1. 一気にまとめて取得するモデル
Log LogLog Log
Log Log Log
Log LogLog Log
Log LogLog Log
6
1. Kafkaのデータ活用モデル
2. 常時取得し続けるモデル
Log
Log
Log
Log
Log
Log
Log
Log Log
Log
Log
Log
Log
Log
Log
7
1. Kafkaのデータ活用モデル
2. 常時取得し続けるモデル
Log
Log
Log
Log
Log
Log Log Log
Log Log Log
LogLog
Log
8
2. ストリーム処理とは?
バッチ処理 対話型クエリ ストリーム処理
実行タイミング 手動起動
定期実行
手動起動
定期実行
常時実行
処理単位 保存済みデータを
一括処理
保存済みデータを
一括処理
1~少数の
フローデータを処理
実行時...
9
2. ストリーム処理とは?
• バッチ処理
• データストアに蓄積したデータを
一括変換、レポート/モデル生成を行うモデル
生成したデータの出力先は
主にデータストア
10
2. ストリーム処理とは?
• 対話型クエリ
• データストアに蓄積したデータに
対してクエリを実行し、結果を取得するモデル
クエリの実行結果は実行元
で取得するケースが多い
11
2. ストリーム処理とは?
• ストリーム処理
• 「連続発生データを常時処理し続ける」モデル
• データの発生元は多岐にわたる
センサー
データ
ログ
アプリ
履歴
データ発生元 メッセージキュー ストリーム処理部 データ利用先
Kaf...
12
2. ストリーム処理とは?
バッチ処理 対話型クエリ ストリーム処理
実行タイミング 手動起動
定期実行
手動起動
定期実行
常時実行
処理単位 保存済みデータを
一括処理
保存済みデータを
一括処理
1~少数の
フローデータを処理
実行...
13
3. ストリーム処理プロダクト概況
• ストリーム処理を実現するプロダクトは多彩
• 元は2011年のStorm公開を機に広く(?)発展
• 以降のプロダクトにいい意味でも悪い意味でも影響
• 最近多数のプロダクトが公開
• 下記のような...
14
3. ストリーム処理プロダクト概況
古 新公開時期
DSL
UIで
Dataflow定義
純ストリーム処理エンジン
Storm
Summingbird
NiFi
Spring Cloud
Data Flow
Cask Hydrator
B...
15
3. ストリーム処理プロダクト概況
古 新公開時期
DSL
UIで
Dataflow定義
純ストリーム処理エンジン
Storm
Summingbird
NiFi
Spring Cloud
Data Flow
Cask Hydrator
B...
4. ストリーム処理で考えるべきこと
• ストリーム処理を構築する上で
考えるべきことについて説明します。
• プロダクト選定時
• サービス開発時
• この項目自体も
Storm、Spark Streamingから挙げたものです。
• もしF...
4. ストリーム処理で考えるべきこと
• プロダクト選定時に考えるべき主要観点
1. 実装言語は何か?
→ 未成熟なまま開発するため、解析必須
2. インストールの際に何が必要?
→ 各ホストにインストールするのは困難
3. サービス動作中にど...
4. ストリーム処理で考えるべきこと
• サービス開発時に考えるべき主要観点
1. 【必要な場合】Exactly Onceの実現方法
→ データストアを用いて冪等性を実現
ストリーム処理単体では実現できない。
2. データがプロセスをまたがない...
まとめ
• Kafkaの活用方法には大きく2モデルある
1. 一気にまとめて取得するモデル→バッチ処理
2. 常時取得し続けるモデル→ ストリーム処理
• ストリーム処理ベストプロダクトは選べない
• プロダクトは異なっても共通点は多い
1. ...
検討ポイント詳細はこちらの資料参照
20
http://www.slideshare.net/SotaroKimura/jvm-62243371
Enjoy stream processing!
and share knowledge!
https://www.flickr.com/photos/elf-8/15276069760
Prochain SlideShare
Chargement dans…5
×

Kafkaを活用するためのストリーム処理の基本

6 258 vues

Publié le

2016/05/31 Apache Kafka Meetup Japan #1 での発表資料

Publié dans : Ingénierie
  • Soyez le premier à commenter

Kafkaを活用するためのストリーム処理の基本

  1. 1. Kafkaを活用するための ストリーム処理の基本 2016/05/31 Apache Kafka Meetup Japan #1 木村宗太郎(@kimutansk) https://www.flickr.com/photos/gruenewiese/13194312524
  2. 2. 自己紹介 • 木村 宗太郎(Sotaro Kimura) • ビッグデータ界隈に生息する何でも屋 • バックエンドからフロントエンド、技術検証から運用、 ドキュメント書きまで色々 • Kafkaとの出会いは3年程前に Stormとの連携を試したのがキッカケ。 • だが、その後大規模なものをやる機会には恵まれず... • 自宅サーバには常に入っています。 • Twitter他 : @kimutansk 1
  3. 3. アジェンダ 1. Kafkaのデータ活用モデル 2. ストリーム処理とは? 3. ストリーム処理プロダクト概況 4. ストリーム処理で考えるべきこと 2
  4. 4. 3 1. Kafkaのデータ活用モデル • Kafkaのデータの用い方は大きく2つある。 1. 一気にまとめて取得するモデル 2. 常時取得し続けるモデル
  5. 5. 4 1. Kafkaのデータ活用モデル 1. 一気にまとめて取得するモデル Log Log Log Log Log Log Log Log Log Log Log Log Log Log Log
  6. 6. 5 1. Kafkaのデータ活用モデル 1. 一気にまとめて取得するモデル Log LogLog Log Log Log Log Log LogLog Log Log LogLog Log
  7. 7. 6 1. Kafkaのデータ活用モデル 2. 常時取得し続けるモデル Log Log Log Log Log Log Log Log Log Log Log Log Log Log Log
  8. 8. 7 1. Kafkaのデータ活用モデル 2. 常時取得し続けるモデル Log Log Log Log Log Log Log Log Log Log Log LogLog Log
  9. 9. 8 2. ストリーム処理とは? バッチ処理 対話型クエリ ストリーム処理 実行タイミング 手動起動 定期実行 手動起動 定期実行 常時実行 処理単位 保存済みデータを 一括処理 保存済みデータを 一括処理 1~少数の フローデータを処理 実行時間 分~時間 秒~分 永続実行 データサイズ TBs~PBs GBs~TBs Bs~KBs(1件あたり) 処理時間 分~時間 秒~分 ミリ秒~秒 主な用途 ETL ビジネスレポート生成 機械学習モデリング インタラクティブBI 分析 異常/不正検知 レコメンド 可視化 代表的 OSSプロダクト MapReduce Spark Tez Impala Drill Presto (後述) • ビッグデータの処理モデルは主に3つある。
  10. 10. 9 2. ストリーム処理とは? • バッチ処理 • データストアに蓄積したデータを 一括変換、レポート/モデル生成を行うモデル 生成したデータの出力先は 主にデータストア
  11. 11. 10 2. ストリーム処理とは? • 対話型クエリ • データストアに蓄積したデータに 対してクエリを実行し、結果を取得するモデル クエリの実行結果は実行元 で取得するケースが多い
  12. 12. 11 2. ストリーム処理とは? • ストリーム処理 • 「連続発生データを常時処理し続ける」モデル • データの発生元は多岐にわたる センサー データ ログ アプリ 履歴 データ発生元 メッセージキュー ストリーム処理部 データ利用先 Kafkaの主な利用先
  13. 13. 12 2. ストリーム処理とは? バッチ処理 対話型クエリ ストリーム処理 実行タイミング 手動起動 定期実行 手動起動 定期実行 常時実行 処理単位 保存済みデータを 一括処理 保存済みデータを 一括処理 1~少数の フローデータを処理 実行時間 分~時間 秒~分 永続実行 データサイズ TBs~PBs GBs~TBs Bs~KBs(1件あたり) 処理時間 分~時間 秒~分 ミリ秒~秒 主な用途 ETL ビジネスレポート生成 機械学習モデリング インタラクティブBI 分析 異常/不正検知 レコメンド 可視化 代表的 OSSプロダクト MapReduce Spark Tez Impala Drill Presto (後述) • 今回の対象となるのは「ストリーム処理」
  14. 14. 13 3. ストリーム処理プロダクト概況 • ストリーム処理を実現するプロダクトは多彩 • 元は2011年のStorm公開を機に広く(?)発展 • 以降のプロダクトにいい意味でも悪い意味でも影響 • 最近多数のプロダクトが公開 • 下記のような派生パターン有 • UIでDataflow定義 • 処理を定義可能なUIを保持するパターン • DSL • 同一の記述で複数のストリーム処理エンジン上で アプリケーションが実行可能
  15. 15. 14 3. ストリーム処理プロダクト概況 古 新公開時期 DSL UIで Dataflow定義 純ストリーム処理エンジン Storm Summingbird NiFi Spring Cloud Data Flow Cask Hydrator Beam Heron SensorBee Kafka Streams Ignite Streaming
  16. 16. 15 3. ストリーム処理プロダクト概況 古 新公開時期 DSL UIで Dataflow定義 純ストリーム処理エンジン Storm Summingbird NiFi Spring Cloud Data Flow Cask Hydrator Beam Heron SensorBee Kafka Streams Ignite Streaming 最近多くプロダクトが公開 正直、追いきれない状況 そのため、どれがいい、とは現状言えない。 (公開される資料はバイアスが・・・) かつ、今良くてもすぐ陳腐化・・・
  17. 17. 4. ストリーム処理で考えるべきこと • ストリーム処理を構築する上で 考えるべきことについて説明します。 • プロダクト選定時 • サービス開発時 • この項目自体も Storm、Spark Streamingから挙げたものです。 • もしFlink、Apex、Gearpump等他プロダクトの 経験者がいれば、是非とも補足を。 16
  18. 18. 4. ストリーム処理で考えるべきこと • プロダクト選定時に考えるべき主要観点 1. 実装言語は何か? → 未成熟なまま開発するため、解析必須 2. インストールの際に何が必要? → 各ホストにインストールするのは困難 3. サービス動作中にどこまで更新可能か? → 常時動作する関係上、止められないため。 4. 接続用コンポーネントが揃っているか? → Kafkaはほぼすべてのプロダクトと接続可能 そのため他コンポーネントの充実度が重要 17
  19. 19. 4. ストリーム処理で考えるべきこと • サービス開発時に考えるべき主要観点 1. 【必要な場合】Exactly Onceの実現方法 → データストアを用いて冪等性を実現 ストリーム処理単体では実現できない。 2. データがプロセスをまたがないように配置 → シリアライズの遅延も大きな影響になる。 3. 極力メモリ上に収めるか、並列度を調整 → 基本、ディスクに同期的に書かない。 4. ログを集約する機構を準備 → 分散処理ではないとまともに解析できない。 18
  20. 20. まとめ • Kafkaの活用方法には大きく2モデルある 1. 一気にまとめて取得するモデル→バッチ処理 2. 常時取得し続けるモデル→ ストリーム処理 • ストリーム処理ベストプロダクトは選べない • プロダクトは異なっても共通点は多い 1. 性能特性/ボトルネックとなるポイント 2. データ設計 3. 解析を行うための準備 etc • 上記とプロダクト成熟度を踏まえ構築 19
  21. 21. 検討ポイント詳細はこちらの資料参照 20 http://www.slideshare.net/SotaroKimura/jvm-62243371
  22. 22. Enjoy stream processing! and share knowledge! https://www.flickr.com/photos/elf-8/15276069760

×