「[[.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