本内容は、デブサミ2014の講演のメモです。
http://event.shoeisha.jp/devsumi/20140213/session/399/
ビッグデータ x リアルタイム
リアルタイムが必要な理由
IoT (Internet of Things)
センサーなどのインターネット
に注目
Googleの提案
- 2003 GFS
- 2004 Map Reduce
- 2006 BigTable
- 2010 Percolator / Dremel (BigQuery)
オープンソースプロダクト
- 2007 Hadoop
- 2008 HBase
- 2011 Twitter Storm
- 2013 Drill
これまで
ログ解析、処理時間短縮、リコメンドエンジン => 主にバッチ処理
今後求められる
- 不正利用、不正アクセス検知
- センサーデータ
ビッグデータの種類
-
バッチ
技術:MapReduce
プロダクト:Hadoop -
クエリ インタラクティブクエリ
技術:クエリ、OLTP
プロダクト:Drill / Impala / Stinger / Presto -
ストリーム
技術:Stream processing
プロダクト:Storm / Spark Streaming
Ltencyはバッチからストリームに向かって低くなる
ストリームデータ処理
利用例
- 大量のデータの事前処理
- リアルタイムデータ集計
- センサーデータの集計・分析
- セキュリティ
ストリームデータ処理を実現するStrom
Twitterがオープンソースとして公開
コアエンジンはClojure、コンポーネントはJava
コンポーネントは、Scala Rubyなども可
特徴
1. Integrates
2. Simple API
3. Scalable
4. Fault tolerant
5. Guarantees data processing
6. Use with any languages
7. Easy to deploy and operate
構成
Nimbus -> Zookeeper -> Supervisor - Worker - Executor
Topology
Spout -> Bolt
Spout:TUpleとしてデータソースを送出する
Bolt:StreamからTupleを受信し、処理する
- Stream groupoings
- Deistrbuted RPC
- Transactional
- Trident
- Metricds
ストリームデータ処理のアーキテクチャ
- 大量データの収集方法
- 増減刷るストリームデータへの対応
- 分散処理
- 中間データの扱い
一旦キューに入れて
実例
ログのリアルタイム作成、フィルタリング
Stomethign + Strom
Storm on YARN
Amazon Kinesis with Storm
Kinesisはデータの収集
##Stormでオンライン機会学習
AcroMUSASHI Stream
https://github.com/acromusashi/
オンライン機会学習
Stream-ML
モチベーション
- イベント処理 => CEP => 機械学習 on ストリームデータ
- スケーラブル + 高信頼性でリアルタイム系で利用できる機械学習
- チャレンジ!!
特徴
- スケーラビリティを備えた高速分散処理
- 機械学習のアルゴリズム単体ではなく、データ分析全体のリアルタイム処理
バッチとリアルタイムのハイブリッド
ラムダアーキテクチャ (バッチ x ストリーム)
Serving Layer
-
SploutSQL
− ElephantDB -
HBase
-
Casandra
これらを、Strom Imparaなどでマージ