デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~
Post on 10-May-2015
11068 Views
Preview:
Transcript
~ストリームデータ処理から機械学習まで~
2014/02/13
Acroquest Technology 株式会社
鈴木 貴典
13-E-5
#devsamiE
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 2
自己紹介
{
“氏名” : ”鈴木 貴典”
“所属” : “Acroquest Technology Co., Ltd.”
“Twitter” : “@takanorig”
“Facebook” : “https://www.facebook.com/takanorig”
“分野” : [“SEPG”, “Testing”, “Management”,
”Framework”, ”Platform”]
}
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 3
#1 ビッグデータ×リアルタイム
#2 ストリームデータ処理を実現するStorm
#3 ストリームデータ処理のアーキテクチャ
本日のStory
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 4
ビッグデータ ×
リアルタイム
Story #1
In 60 seconds
http://blog.qmee.com/qmee-online-in-60-seconds/
1. なぜ、リアルタイムが必要なのか?
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 7
ここに注目
Internet Of Things (IoT)
http://www.businessinsider.com/decoding-smartphone-industry-jargon-2013-11
1. なぜ、リアルタイムが必要なのか?
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 8
2002 2004 2006 2008 2010 2012 2014
Google GFS論文発表
(2003)
Google GigTable論文発表 (2006)
Google MapRedue論文発表 (2004)
Google Percolator・ Dremel(BigQuery) 論文発表 (2010)
Twitter Storm公開 (2011)
Hadoop First Release
(2007)
ビッグデータ関連プロダクトのパラダイム
HBase First Release (2008)
Drill公開(2013)
リアルタイム性が 求められる時代へ
2. ビッグデータ × リアルタイム
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 9
今後求められるビッグデータ処理 これまでのビッグデータ処理
① ログ解析によるサイトやサービスに対するアクセス分析
② 大量データに対する処理の 時間短縮
③ レコメンドエンジンを利用した サービス性向上
① 不正利用・不正アクセス検知
② センサーデータを利用した 交通状況や自然状況の分析
③ 緊急災害時の対応
④ ユーザの直近の行動に基づく サービス性向上
主にバッチで 処理する領域
リアルタイム性が 求められる領域
3. ビッグデータ処理の3つのタイプ
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 10
Batch Stream Query
高 低
Latency
3. ビッグデータ処理の3つのタイプ
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 11
バッチ処理 インタラクティブ
クエリ処理 ストリームデータ
処理
実行タイミング ユーザの指定や 定期的な実行
ユーザの指定や 定期的な実行
常時連続実行
処理単位 蓄積データを 一括で処理
蓄積データを 一括で処理
1~少数の フローデータを処理
実行時間 分~時間 秒~分 ミリ秒~秒
処理モデル MapReduce クエリ, OLTP Stream processing
要件に応じて、単体 or 組み合わせて利用
3. ビッグデータ処理の3つのタイプ
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 12
バッチ処理 インタラクティブ
クエリ処理 ストリームデータ
処理
タイプごとの代表的なプロダクト
Apache
Storm
Apache
Spark Streaming
Hadoop
CDH: Cloudera's Distribution
Including Apache Hadoop
HDP: Hortonworks Data Platform
Apache
Drill
Cloudera
Impala
Hortonworks
Stinger
Presto
4. ストリームデータ処理とは?
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 13
スマートフォン センサー
ログ
SNS
ストリームデータ処理
監視や通知用 デバイス
ダッシュボード 分析ツール
データストア
連続的なデータ 結果を常時出力
連続的に発生し続けるデータ(ストリームデータ)を リアルタイムに、解析・分析等の処理を行い続ける
5. ストリームデータ処理の適用モデル
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 14
大量データの 事前処理
リアルタイム データ集計
セキュリティ センサーデータの
集計/分析
• これまで、バッチとして集計していたものを、リアルタイムに集計。
• ユーザの行動やアクセス状況に基づいたリアルタイムの判断/サービスを可能にする。
• 大量のセンサーデータを集計/分析。
• 近年、環境/ヘルスケア/ウェアラブルなどのセンサーやデバイスの情報を扱うケースも増えている。
• ID不正利用、なりすましなどの異常行動を瞬時に検知。
• 外部からの攻撃に対して、リアルタイムに対応することが可能。
• 大量データの事前整形/フィルタリング/マッチング等の処理を行う。
• 必要(正確)なデータだけを扱えるようにする。
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 15
ストリームデータ処理を実現する
Storm
Story #2
Copyright © Acroquest Technology Co., Ltd. All rights reserved.
Stormとは?
Distributed and fault-tolerant realtime computation System
分散し、耐障害性の高い、 リアルタイム処理システム
1. Stormとは?
1. Twitter社がオープンソースとして公開した 分散リアルタイム処理フレームワーク
元々は、Twitterの分析を行っていたBackType社が開発
Nathan Marz 氏 が Lead Engineer
Twitter社がBackType社を買収し、OSSとして公開(2011/09/11)
2. ストリームデータ処理を実現するための代表的なOSS
コアエンジンはClojure、コンポーネントはJavaで実装されている
コンポーネント部分は、Scala, Rubyなど、他の言語での実装も可能
3. 2013/09/18より、Apache Incubaterとして 開発が進められている
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 17
2. Stormの導入事例(利用企業)
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 18
http://storm.incubator.apache.org/
3. Stormの7つの特長
1. Integrates 簡単な統合
メッセージキューや、NoSQL/DBと簡単に連係して処理することが可能。
2. Simple API シンプルなAPI
StormのAPIは非常にシンプルであり、複雑な処理を特に意識することなく、 分散リアルタイムシステムの開発可能。
3. Scalable スケーラブル
Stormは複数のマシンで構成されるクラスタ上で並列分散的に動作し、膨大な数のメッセージに対しても低レイテンシを維持しつつ、スケールする。
4. Fault tolerant 耐障害性
障害が発生し、処理中のノードがダウンした場合でも、Stormは必要に応じてタスクの再割り当てやノードの再起動を行い、処理が完全に停止してしまうようなことがない。
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 19
3. Stormの7つの特長
5. Guarantees data processing 欠損のないデータ処理
何らかの理由により、データの処理に失敗したり、タイムアウトが発生したりした場合でも、Stormはそれを検知し、再処理するしくみを有している。 この機構により、すべてのメッセージが処理されることを担保可能。
6. Use with any language 複数の開発言語サポート
Storm自体はClojureで実装されているが、ユーザが開発するアプリケーション部分は、様々な言語で開発可能である。 Java, Scala, Ruby, Python, Perl, JavaScript, PHPなど、多くの言語をサポート。
7. Easy to deploy and operate 簡単なデプロイ・運用
Stormは簡単にデプロイし、動作させることができ、システム構成もわずかな設定で変更。
Amazon EC2などのクラウド環境でも動作させられる。
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 20
4. Storm Cluster(Physical View)
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 21
Nimbus
Zookeeper
Zookeeper
Zookeeper
Supervisor Worker
Supervisor
Supervisor Worker
Numbus: Masterノード
• Workerプロセスへのタスクの割り振り
• Workerプロセスのモニタリング
Zookeeper: クラスタの協調処理
• 各ノードの状態管理
Nimbus Node
Supervisor Node
Supervisor: Slaveノード
Worker: タスクを実行するプロセス
• Topologyのサブセットの実行
1..*
Supervisor Executer
1..*
• タスクのアサイン待ち受け
• Workerプロセスの起動/停止
Worker Process
Executer: Worker上で動作する 処理スレッド
1
1
5. Storm Topology(Logical View)
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 22
Spout
Spout
Bolt
Bolt
Bolt
Bolt
Bolt
Topology
Spout:
Streamのデータソース としてTupleを送出する
Bolt:
StreamからTupleを 受信し、変換・加工する
Tuple:
Stormで処理されるメッセージを 保持する、単一のデータ
Stream:
途切れずに連続するTupleの流れ
Spout+Boltからなるネットワーク構造。Stormにおける処理の単位となる
6. Storm Key features
1. Stream groupings ストリームの複数種類のグルーピング方法を提供している。
2. Distributed RPC クエリ的に、ストリーム処理を実行する。アドホック、インタラクティブな実行。
3. Transactional トランザクション的なストリーム処理も実行可能。
4. Trident 複数のTupleに対しての処理を可能にする。関数的な呼び出しで、集計・マージ・ジョインといった、CEP(Complex Event Processing)のような処理も簡単に実現可能。
5. Metrics ストーム内部のメトリクス情報を取得可能。動作状況や異常の発生などの情報が分かりやすく得られる。
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 23
7. Stormのパフォーマンス
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 24
300,000 Tuples/sec
(on EC2 c1.xlarge × 1)
1,640,000 Tuples/sec
(on the Node of Twitter Cluster)
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 25
ストリームデータ処理の アーキテクチャ
Story #3
26
① 大量データの 収集方法
② 増減する ストリームデータへの 対応
③ 分散処理、 および、分散の単位
④ 中間データの扱い
1. アーキテクチャの 検討ポイント
解析結果用 データストア
ダッシュボード 分析ツール
ユーザ通知
2. ストリームデータ処理のアーキテクチャ
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 27
センサー データ
ログ
データ受信 メッセージ
キュー
通信 データ
データ発生元
SNS データ
データ受信部 データ処理部
データ収集
永続化用 データストア
取得
取得
解析 出力
出力 取得
保存
解析
キャッシュ用 データストア
データ活用部
基本的なアーキテクチャ
3. 事例 ①Infochimps社のリアルタイム分析サービス
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 28
① 政府系からビジネス系データまで、60,000を超える膨大なデータを提供するInfochimps社のリアルタイム分析プラットフォームとして利用されている。
② Storm+Kafka をメインに、ストリームデータ処理をクラウド上で実現しており、 ビッグデータの提供を行っている。
http://blog.infochimps.com/2012/10/30/next-gen-real-time-streaming-storm-kafka-integration/
3. 事例 ②Loggly社のログマネジメントサービス
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 29
① クラウド・ベースでのログマネジメントを行っているLoggly社の第二世代 プラットフォームを、Kafka+Storm+Elasticsearchを利用して構築。
② Stormを利用して、イベント・パイプラインを構築。ログのリアルタイムでの 収集+インデックス作成に役立っている。
http://www.slideshare.net/AmazonWebServices/infrastructure-at-scale-apache-kafka-twitter-storm-elastic-search-arc303-aws-reinvent-2013
3. 事例 ③クラウド上でセンサーデータのリアルタイム判定+集計
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 30
① Cloudn(クラウド・エヌ)上で、センサーデータをリアルタイムに収集・処理
② リアルタイムで、データの閾値判定処理と一定間隔での集計処理を、常時並列実行
表示用 データ保存
結果の出力
イベント 受信
一時 データ保存
センサー群
取得
解析
保存
取得
保存
グラフ表示
RabbitMQ
判定
通知
リアルタイム 閾値判定
ストリーム データ集計
Storm
4. Something+Storm
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 31
Storm on YARN
① Hadoop 2.0(YARN Based)とStormとの組み合わせ
② Hadoopが管理するノード上で、Stormクラスタを動作させる
③ HDFSやHBaseのデータリソースを、Stormから簡単に利用できる
4. Something+Storm
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 32
Amazon Kinesis with Storm
① 「Amazon Kinesis Storm Spout」を利用して、Kinesisで収集・加工したストリームデータを、Stormクラスタに受け渡して処理可能
② Kinesis自体、分散してのストリームデータ処理が可能だが、Kinesis だけでは実現しにくい複雑な処理や、既存のStormクラスタとの 連係が可能
Amazon Kinesis
Amazon Kinesis
Storm Spout
Bolt Bolt
Bolt Bolt
5. Stormでオンライン機械学習 Stream-ML
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 33
AcroMUSASHI Stream:
Stormをベースとした ストリームデータの分散処理プラットフォーム
• Stormをより簡単に使いこなすためのエコシステム
• データの収集/受信、データの格納までをシームレスに連結
• 分散システムの立ち上げをより迅速に
2014/01/30 オンライン機会学習
ライブラリ
AcroMUSASHI Stream-ML
をリリース!
https://github.com/acromusashi
機械学習
With
Storm
5. Stormでオンライン機械学習 Stream-ML
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 34
センサー データ
ログ
通信 データ
SNS データ
インメモリDB
学習結果の オンライン更新
ストリーム データ
Stream-ML
クラスタリング 異常値検知
評価結果
学習結果をオンラインで更新しながら ストリームデータを解析・評価
5. Stormでオンライン機械学習 Stream-ML
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 35
モチベーション
①イベント処理 ⇒ CEP ⇒ 機械学習 on ストリームデータ処理
②スケーラブル + 高信頼性で、リアルタイム系で 使える機械学習のための機能が欲しかった
③チャレンジ!!(できたらカッコ良さそう)
5. Stormでオンライン機械学習 Stream-ML
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 36
特長
クラスタリング (K-means)
外れ値検知 (LOF)
変化点検出 (ChangeFinder)
対応済みのアルゴリズム
① スケーラビリティを備えた高速分散処理
② 機械学習のアルゴリズム単体ではなく、 データ分析全体のリアルタイム分散処理が可能
6. バッチとリアルタイムのハイブリッド
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 37
ラムダアーキテクチャ(バッチ×ストリーム)
Data
Batch Layer
Speed Layer
Serving Layer
All Data Precomputed Information
Batch recompute
Process Stream
Incremented Information
RealTime increment
Batch View
Batch View
Realtime View
Realtime View
Merg
e
Query
6. バッチとリアルタイムのハイブリッド
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 38
ラムダアーキテクチャ(バッチ×ストリーム)
Data
Batch Layer
Speed Layer
Serving Layer
All Data Precomputed Information
Batch recompute
Process Stream
Incremented Information
RealTime increment
Batch View
Batch View
Realtime View
Realtime View
Merg
e
Query
(HDFS) (MapReduce)
(Storm) (Storm)
ElephantDB
(Storm)
(Impala)
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 39
1. ビッグデータの処理は、リアルタイム性を求められる時代になってきた
• ストリームデータ処理は、低レイテンシで大量のデータを 常時処理する方式であり、リアルタイムの処理に向く
2. Stormは、ストリームデータ処理を簡単に実現するための フレームワーク
3. Stormを利用したストリームデータ処理は、応用範囲が広い
• 処理のパイプ、バッチ処理との連係、機械学習なども可能にする
• AcroMUSASHI Stream-ML 使ってみてください
本日のまとめ
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 40
Thank you
Infrastructures Evolution
top related