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.

SensorBee: Stream Processing Engine in IoT

Stream Processing Casual Talks #1 at Yahoo! JAPAN http://connpass.com/event/35264/ にて使用したスライドです。

  • Login to see the comments

  • Be the first to like this

SensorBee: Stream Processing Engine in IoT

  1. 1. SensorBee Stream Processing Engine in IoT Stream Processing Casual Talks #1 TANAKA Daisuke 2016/07/22
  2. 2. 自己紹介と会社紹介  TANAKA Daisuke (田中大輔) (@disktnk) – PFNのエンジニア – 製品開発、SensorBee、異常検知  Preferred Networks. Inc, (PFN) – 2014/03 に Preferred Infrastructure よりスピンオフ – ミッション: IoT時代に向けた新しいコンピュータを創造する あらゆるモノに知能をもたせ、分散知能を実現する 2
  3. 3. ポジショントーク  エッジヘビーコンピューティング – 人が生み出すデータから、機械が生み出すデータへ – データ量の爆発、データ種類の爆発によりデータの中央集権的収集がより困難となる – データを一か所に集めない前提のもとで深い分析を実現する (もちろんクラウドも積極的に使っていく)  ディープラーニング – データ量の爆発、データ種類の爆発に対して、人がルールを書くのは限界がある – 音声認識・画像認識・ゲームAIなどで顕著な成果 – デバイスの進化、GPUの利用など様々な要因により、実世界で応用されるようになっ た 3
  4. 4. 本日話す内容  SensorBee をさらっと知る  SensorBee の中身を知る  SensorBee のプラグインを知る  本日のNGワード: 人工知能、リアルタイム 4
  5. 5. 本日話す内容  SensorBee をさらっと知る  SensorBee の中身を知る  SensorBee のプラグインを知る 5
  6. 6. SensorBee: Intelligent Streaming ETL for IoT  構造化データあるいは非構造化データの抽出 (Extract) および転送 (Transform) の機能を揃えたIoT向けストリーム処理エンジン  エッジ及びフォグ(*) で動かすことを前提としている。Go実装。  BQL という SQL に似たスクリプトで処理トポロジーを記述 6 Camera Vehicle Router Sensor fluentd RDBMS Search Engine NoSQL Data Sources Data Destinations SensorBee (*) https://www.cisco.com/c/dam/en_us/solutions/trends/iot/docs/computing-overview.pdf
  7. 7. ETLツールとしての SensorBee  Extract: データの抽出 (前処理や整形を含むことも)  Transform: 加工:実際の目的とする処理をする  Load: データの書き出し  SensorBee の事例に置き換える 7 Extract Transform Load • 監視カメラ画像を取得 • weblogから欲しいデー タを抽出 • 軸受けの振動データ・温 度データを取得 • デバイスの位置データを 取得 • 会話ログから質問を取得 • ... • 画像から対象を認識・分 類・タグ付け • 機器の異常スコアを計算 • 質問に対応する応答文を 生成 • ... • テキストファイルに保存 • ビデオストリームとして 流す • DBに書き込む • ...
  8. 8.  教科書的なETL (OTLP / OLAP) データ処理基盤としての SensorBee 8 TransformExtract Load
  9. 9.  エッジヘビーコンピューティング – エッジからロードまでのデータフローは SensorBee に一任する – 研究者や機械学習のエンジニアはアルゴリズムの作成・モデルの改善に集中する データ処理基盤としての SensorBee 9 TransformExtract 機械学習! 学習 モデル • DB? • クラウド? • 別のモジュール? Load
  10. 10. 製品としての SensorBee  DIMo: Deep Intelligence in Motion – 業界・課題別に機能をまとめたパッケージ – SensorBee上で動く機械学習エンジンとして作り上げることにより、製品として横展 開できるようにしている 10 DIMoソリューション 業界別 : IoT向けストリームデータ処理基盤 : ディープラーニングフレームワーク DeepIntelligence in-Motion(DIMo) タスク別 自動車 ヘルスケア 製造業 異常検知 映像解析 … ??? …
  11. 11. 本日話す内容  SensorBee をさらっと知る  SensorBee の中身を知る  SensorBee のプラグインを知る 11
  12. 12. SensorBee と BQL  SensorBee では BQL という CQL の方言で処理を記述する  「第4回ビックデータ処理基盤研究会」で使用した公開済み資料をここでも使い ます。駆け足気味で説明します。 – ストリーム処理とSensorBee http://www.slideshare.net/disktnk/sensorbee-59870877 12
  13. 13. 1. (Continuous) Queryの登録 2. データを流す、あるいは既に流れている 3. 入力されたデータに対して処理を行う “on the fly” 4. 処理結果を(クライアントに対して)継続的に出力する Data Stream Management System(DSMS) 13 Continuous Queries Streaming Inputs Streaming Outputs data stream 1 3 42
  14. 14. Continuous Queryのセマンティクス  Operators – 入力された1つあるいは複数のデータに対して処理する単位。 – stream-to-relation, relation-to-relation, relation-to-stream  Queues – Operator間のデータ。SensorBeeでは1つのデータをTupleと呼ぶ。  Synopses – ストリームの操作や状態1つ1つの(簡易)表現の単位。Operatorとは独立してQuery Planの最適化を考えるとき便利。SensorBeeでは特に定義していない。 14 [Aras et al., 2006] [Jain et al., 2008]
  15. 15. Continuous Query Operators: シンプルな例  selection  join  count 15 σa S1 a a a a f pass or drop ⋈ S1 b d c a d b a insert S2 b d g f e probe 9S1 10 9 8 7 update (to “10”) b a f generate result b
  16. 16. Continuous Query Operator TypeとBQL  BQL (SensorBeeで実装されているCQLの方言) のサンプル 16 SELECT RSTREAM S1.id, S1.hoge1, S2.hoge2 FROM S1 [RANGE 1 TUPLES], S2 [RANGE 1 TUPLES] WHERE S1:id = S2:id;
  17. 17. BQL: Stream-to-Relation  BQLサンプル – Tuple based: [RANGE 1 TUPLES] Time based: [RANGE 1 SECONDS] – Buffering: [RANGE 3 SECONDS, DROP NEWEST IF FULL] – Sliding Window, Tumbling Window (SensorBeeでは未サポート) – セマンティクスが難しい。。 17 SELECT RSTREAM S1.id, S1.hoge1, S2.hoge2 FROM S1 [RANGE 1 TUPLES], S2 [RANGE 1 TUPLES] WHERE S1:id = S2:id; stream-to-relation
  18. 18. BQL: Relation-to-Relation  BQLサンプル – Selection – Join – Aggregation – Filter etc... 18 SELECT RSTREAM S1.id, S1.hoge1, S2.hoge2 FROM S1 [RANGE 1 TUPLES], S2 [RANGE 1 TUPLES] WHERE S1:id = S2:id; relation-to-relation
  19. 19. BQL: Relation-to-Stream  BQLサンプル – RSTREAM / ISTREAM / DSTREAM Example: http://sensorbee.readthedocs.org/en/latest/bql.html#id4 – Detail: http://sensorbee.readthedocs.org/en/latest/bql.html#relation-to- stream-operators 19 SELECT RSTREAM S1.id, S1.hoge1, S2.hoge2 FROM S1 [RANGE 1 TUPLES], S2 [RANGE 1 TUPLES] WHERE S1:id = S2:id; relation-to-stream
  20. 20. SensorBeeの処理トポロジー  Topology – SensorBeeでは、入力から出力までの1つのまとまりをTopologyとして表現 – DAGとして表現される 20 Continuous Queries Streaming Inputs data stream
  21. 21. Source  Source – Topologyへの入力を表現するComponent 21 Continuous QueriesSources data stream S1 S2 S3 CREATE SOURCE S1 TYPE fluentd WITH ...; CREATE SOURCE S2 TYPE mqtt WITH ...; CREATE SOURCE S3 TYPE user_source WITH ...;
  22. 22. Stream  Stream – Tupleへの操作 (内部実装的には “Box”) 22 Streams Sources S1 S2 S3 CREATE STREAM B1 AS SELECT ISTREAM udf1(*) FROM S1 [RANGE 1 SECONDS], S2 [RANGE 1 SECONDS] WHERE S1:id = S2:id; B1 B3 B2
  23. 23. Sink  Sink – Topologyからの出力を定義する 23 Streams Sources S1 S2 S3 B1 B3 B2 Sinks D1 D2 D3 CREATE SINK D1 TYPE fluentd WITH ...; INSERT INTO D1 FROM B1; CREATE SINK D2 TYPE mqtt WITH ...; CREATE SINK D3 TYPE user_sink WITH ...;
  24. 24. User Defined Stream-generating Function (UDSF)  UDSF – 新たなSourceとして振る舞えるユーザ定義関数 24 Streams Sources S1 S2 S3 B1 B3 B2 Sinks D1 D2 D3 CREATE SOURCE B2 AS SELECT RSTREAM * FROM udsf1(“S2”) [RANGE 1 SECONDS];
  25. 25. User Defined State (UDS)  UDS – ストリーム上の各Componentから共通でアクセスできるShared State 25 Streams Sources S1 S2 S3 B1 B3 B2 Sinks D1 D2 D3 CREATE STATE G1 TYPE user_state WITH...; CREATE SOURCE B3 AS SELECT ISTREAM * udf3(“G1”, B2:*), S3:* FROM B2 [RANGE 1 SECONDS], S3 [RANGE 1 SECONDS] WHERE B2:foo = S3:foo; G1
  26. 26. Component  core: topology や source / box / sink、ストリーム処理のコアの実装  data: SensorBeeで使用する型  bql: BQLパーザ、BQL実行エンジン  server: 基本的には “sensorbee run” でサーバを起動して使用する  client: BQLの実行はclient経由  cmd: ビルドツールやBQL実行クライアントツール、サブコマンドなど 26
  27. 27. Go言語による実装  ストリーム処理OSS界ではJVM系言語が大人気 – Java: Storm (コア部分はClojure), NiFi, Heron, etc... – Scala: Spark, Samza, Flink, Kafka stream, etc... - akka は確かに使いやすい  SensorBee は 100% Go言語実装 – goroutine 超絶便利、使いやすすぎて中毒症状起こす – ライブラリが (Javaほどではないが) そこそこ充実している – cgo で C/C++ ライブラリとの (静的) リンクが可能 - go1.6 Go-pointer to Go-pointer 問題 27
  28. 28. 本日話す内容  SensorBee をさらっと知る  SensorBee の中身を知る  SensorBee のプラグインを知る 28
  29. 29. SensorBee とプラグイン: Source / Sink 系  opencv  fluentd  mqtt  websocket  raspivideo  kafka (非公式)  slack (非公式) 29
  30. 30. SensorBee とプラグイン: UDF / UDS 系  opencv  py / pymlstate  jubtus – classifier / regression / anomaly  mstranslator (非公式) 30
  31. 31. 外部APIと繋げる  外部APIと繋げる簡単なデモ – https://github.com/disktnk/sb-slack/tree/master/example 31 slack accoun t info transl ate slack Microsoft Translator Text API
  32. 32. Twitterのつぶやきの分類  機械学習と組み合わせたデモ – Tutorial収録 http://sensorbee.readthedocs.org/en/latest/tutorial.html#using- machine-learning – Elasticsearchと機械学習を実際に連携させる http://www.slideshare.net/nobu_k/elasticsearch-59627321 32 Twitter Gen der Ag e Form atting Labeli ng fluentd
  33. 33. SensorBee まとめ  http://sensorbee.io  http://docs.sensorbee.io/en/latest/  https://github.com/sensorbee/sensorbee  https://github.com/sensorbee/ (公式プラグイン) 33
  34. 34. スライドは以上です。ご静聴ありがとうございました。 Copyright © 2016- Preferred Networks All Right Reserved.
  35. 35. 参考文献  A. Arasu, S. Badu, and J. Widom. The CQL continuous query language: Semantic foundations and query execution, 2006.  N. Jain, S. Mishra, A. Srinivasan, J. Gehrke, J. Widom, H. Balakrishnam, U. Cetintemel, M. Cheriniack, R. Tibbertts, and S. Zdonik. Towerds a streaming SQL standard, 2008.  Lukasz Golab, M. Tamer Özsu. Data Stream Management, 2010. 35
  36. 36. We're Hiring!!  Deep Learning系 – ビジョン、音声、時系列データ、強化学習、異常検知  プロダクト開発系 – 最新の研究をいち早くユーザへ届けるためのプロダクト開発にも力を入れています – ストリーム処理のエキスパートももちろん募集中! 36

×