「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfrastructure.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>分散処理]]
--[[分散(バッチ)系>分散処理:分散(バッチ)系]]
--ストリーム系
--[[データ収集・格納系>分散処理:データ収集・格納系]]

*目次 [#z5b3c2d1]
#contents

*概要 [#u7b64dd2]
ストリーム処理には、以下のようなタイプのものがあり、

-[[データ収集(DC)系>#a1fbee60]]
-[[シングル・イベント・プロセッサ(SEP)系>#k5443473]]

は、[[データ収集・格納系>分散処理:データ収集・格納系]]に分類される。

**[[データ収集(DC)系>分散処理:データ収集・格納系#j1442d7c]] [#a1fbee60]
**[[シングル・イベント・プロセッサ(SEP)系>分散処理:データ収集・格納系#nbf7f4c7]] [#k5443473]
**複雑イベントプロセッサ(CEP)系 [#s028d77f]
-[[Hadoop Streaming>#kb0fc744]]
-[[Spark Streaming>#la0e2e58]]
-[[Apache Storm>#v8fac565]]
-[[Kafka Streams>#f061971a]]
-[[Apache Samza]]

*詳細 [#n241db40]
以下のようなリアルタイム処理を行うことが出来る。

**目的別 [#ef4cce53]

***ステートレス処理 [#z2c50b00]
-ステートレスな、最も単純な[[ETL>http://eai/ETL#eed58b6f]]的な処理。

-例
--システム監視のアラート通知
--受信データをフォーマット変換して永続化

***ステートフル処理 [#i3c00427]
-ステートを保持した処理。

-区分
--集計処理
--集約処理
--差分計算
--状態変化の検知

-例
--移動距離の算出(差分計算
--ログイン通知(状態変化の検知

***ウィンドウ処理 [#ycce1602]
-ステートを保持し、
--特定周期(ウィンドウ幅)で集計。
--指定周期(スライディング幅)で再集計。

-例
--Webサイトの過去24時間の訪問者や注文情報
--店舗毎の過去24時間の売上情報

-詳細:→ [[コチラ>#fd3b2598]]

***順序保証処理 [#g0990853]
-送信の順番で受信
-特定のノードのみ受信

**プロダクト [#y82f9daa]

***[[Hadoop Streaming]] [#kb0fc744]
-[[ビッグデータ]]のストリーム処理のプロダクト
-標準入出力を使い、好きな言語で[[MapReduce>Hadoop#b9ef92ab]]を実行

***[[Spark Streaming]] [#la0e2e58]
[[ビッグデータ]]のストリーム処理のプロダクト~
※ [[Apache Storm>#v8fac565]]との違いはリンク先参照を。

***[[Apache Storm]] [#v8fac565]
[[ビッグデータ]]のストリーム処理のプロダクト

***[[Kafka Streams>Apache Kafka#w5ea1b0c]] [#f061971a]
[[Apache Kafka>#xde1800b]]に同梱されるツール。

***[[Apache Kafka]] [#xde1800b]
-デファクト・スタンダードの分散メッセージング・システム、
-ストリーム処理の中核と言われるようになって来ているらしい。

**ポイント [#j39fd7bd]
以下の4点が挙げられている([[プロダクト>#y82f9daa]]によってサポートされる)。

***継続的なデータ処理 [#a98b9dfd]
蓄積側も処理側も継続的にリソースが利用可能である必要がある。

***スループット [#j860aa43]
大量データ処理を行う場合、~
蓄積側も処理側も大量データを扱うスループットが必要になる。

***データ量の変化 [#l6bc3891]
[[継続的な処理>#a98b9dfd]]の中でデータ量が変化すると[[必要なスループット>#j860aa43]]も変化する。

***データロスト [#nc863425]
何らかの契機で、データを失う可能性がある。

**トレードオフ [#mb3e8672]
全てのストリームデータ処理システム
-下記の3要素のバランスで構成され、
-この3要素間のトレードオフがある。

***完全性(Completeness) [#uec1a6d0]
課金処理などで重視される。

***低遅延(Low Latency) [#o502c827]
不正検知システムなどで重視される。

***低コスト(Low Cost) [#b30b6537]

**ウィンドウ [#fd3b2598]
**ウィンドウ処理 [#fd3b2598]

***種類 [#e6ae0a13]
-固定長ウィンドウ(Fixed)~
1時間ごと、等の一定の時間ごとに区切った範囲のウィンドウ

-スライディング・ウィンドウ(Sliding)~
毎分、過去5分間分の結果を集計して出力する。~
と言った、範囲(ウィンドウ)が移動(スライディング)するウィンドウ

-セッション・ウィンドウ(Sessions)~
一定時間以内にアクセスが連続した場合、~
そのアクセスを紐づけるという長さが固定されないウィンドウ

***問題の解消 [#e399a5c4]
-Watermark
--どのイベント時刻まで処理したかの区切り(遅延の足切り)
--遅れを大きくすれば正確性は増すが、遅延時間は大きくなる。

-Trigger
--集計結果をどのタイミングで出力するかを定義する機構
--間隔が
---小さ過ぎる場合、不要な処理を実行する。
---大き過ぎる場合、結果の出力が遅れる。

-Accumulation
--集計結果出力時の累積計算方式
--保持する時間が長いほど、システム・リソースが必要

*[[参考>分散処理#d32f224d]] [#g0e788e4]
-An Overview of Apache Streaming Technologies – Databaseline by Ian Hellström~
https://databaseline.tech/an-overview-of-apache-streaming-technologies/

**Wikipedia [#td78bcaf]
-複合イベント処理~
https://ja.wikipedia.org/wiki/%E8%A4%87%E5%90%88%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E5%87%A6%E7%90%86
-Complex event processing~
https://en.wikipedia.org/wiki/Complex_event_processing
-Event stream processing~
https://en.wikipedia.org/wiki/Event_stream_processing

**Qiita [#nbbe2eed]
-分散ストリーム処理エンジンあれこれ~
https://qiita.com/takanorig/items/aaa4f116d1564ec20dd3
-Googleが考えるストリームデータ処理とは?~
https://qiita.com/kimutansk/items/d6daca473440462634a0

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS