デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム...

40
~ストリームデータ処理から機械学習まで~ 2014/02/13 Acroquest Technology 株式会社 鈴木 貴典 13-E-5 #devsamiE

Transcript of デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム...

Page 1: デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~

~ストリームデータ処理から機械学習まで~

2014/02/13

Acroquest Technology 株式会社

鈴木 貴典

13-E-5

#devsamiE

Page 2: デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~

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”]

}

Page 3: デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~

Copyright © Acroquest Technology Co., Ltd. All rights reserved. 3

#1 ビッグデータ×リアルタイム

#2 ストリームデータ処理を実現するStorm

#3 ストリームデータ処理のアーキテクチャ

本日のStory

Page 4: デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~

Copyright © Acroquest Technology Co., Ltd. All rights reserved. 4

ビッグデータ ×

リアルタイム

Story #1

Page 5: デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~

In 60 seconds

Page 6: デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~

http://blog.qmee.com/qmee-online-in-60-seconds/

Page 8: デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~

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)

リアルタイム性が 求められる時代へ

Page 9: デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~

2. ビッグデータ × リアルタイム

Copyright © Acroquest Technology Co., Ltd. All rights reserved. 9

今後求められるビッグデータ処理 これまでのビッグデータ処理

① ログ解析によるサイトやサービスに対するアクセス分析

② 大量データに対する処理の 時間短縮

③ レコメンドエンジンを利用した サービス性向上

① 不正利用・不正アクセス検知

② センサーデータを利用した 交通状況や自然状況の分析

③ 緊急災害時の対応

④ ユーザの直近の行動に基づく サービス性向上

主にバッチで 処理する領域

リアルタイム性が 求められる領域

Page 10: デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~

3. ビッグデータ処理の3つのタイプ

Copyright © Acroquest Technology Co., Ltd. All rights reserved. 10

Batch Stream Query

高 低

Latency

Page 11: デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~

3. ビッグデータ処理の3つのタイプ

Copyright © Acroquest Technology Co., Ltd. All rights reserved. 11

バッチ処理 インタラクティブ

クエリ処理 ストリームデータ

処理

実行タイミング ユーザの指定や 定期的な実行

ユーザの指定や 定期的な実行

常時連続実行

処理単位 蓄積データを 一括で処理

蓄積データを 一括で処理

1~少数の フローデータを処理

実行時間 分~時間 秒~分 ミリ秒~秒

処理モデル MapReduce クエリ, OLTP Stream processing

要件に応じて、単体 or 組み合わせて利用

Page 12: デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~

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

Facebook

Presto

Page 13: デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~

4. ストリームデータ処理とは?

Copyright © Acroquest Technology Co., Ltd. All rights reserved. 13

スマートフォン センサー

ログ

SNS

ストリームデータ処理

監視や通知用 デバイス

ダッシュボード 分析ツール

データストア

連続的なデータ 結果を常時出力

連続的に発生し続けるデータ(ストリームデータ)を リアルタイムに、解析・分析等の処理を行い続ける

Page 14: デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~

5. ストリームデータ処理の適用モデル

Copyright © Acroquest Technology Co., Ltd. All rights reserved. 14

大量データの 事前処理

リアルタイム データ集計

セキュリティ センサーデータの

集計/分析

• これまで、バッチとして集計していたものを、リアルタイムに集計。

• ユーザの行動やアクセス状況に基づいたリアルタイムの判断/サービスを可能にする。

• 大量のセンサーデータを集計/分析。

• 近年、環境/ヘルスケア/ウェアラブルなどのセンサーやデバイスの情報を扱うケースも増えている。

• ID不正利用、なりすましなどの異常行動を瞬時に検知。

• 外部からの攻撃に対して、リアルタイムに対応することが可能。

• 大量データの事前整形/フィルタリング/マッチング等の処理を行う。

• 必要(正確)なデータだけを扱えるようにする。

Page 15: デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~

Copyright © Acroquest Technology Co., Ltd. All rights reserved. 15

ストリームデータ処理を実現する

Storm

Story #2

Page 16: デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~

Copyright © Acroquest Technology Co., Ltd. All rights reserved.

Stormとは?

Distributed and fault-tolerant realtime computation System

分散し、耐障害性の高い、 リアルタイム処理システム

Page 17: デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~

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

Page 18: デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~

2. Stormの導入事例(利用企業)

Copyright © Acroquest Technology Co., Ltd. All rights reserved. 18

http://storm.incubator.apache.org/

Page 19: デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~

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

Page 20: デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~

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

Page 21: デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~

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

Page 22: デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~

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における処理の単位となる

Page 23: デブサミ2014-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

Page 24: デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~

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)

Page 25: デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~

Copyright © Acroquest Technology Co., Ltd. All rights reserved. 25

ストリームデータ処理の アーキテクチャ

Story #3

Page 26: デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~

26

① 大量データの 収集方法

② 増減する ストリームデータへの 対応

③ 分散処理、 および、分散の単位

④ 中間データの扱い

1. アーキテクチャの 検討ポイント

Page 27: デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~

解析結果用 データストア

ダッシュボード 分析ツール

ユーザ通知

2. ストリームデータ処理のアーキテクチャ

Copyright © Acroquest Technology Co., Ltd. All rights reserved. 27

センサー データ

ログ

データ受信 メッセージ

キュー

通信 データ

データ発生元

SNS データ

データ受信部 データ処理部

データ収集

永続化用 データストア

取得

取得

解析 出力

出力 取得

保存

解析

キャッシュ用 データストア

データ活用部

基本的なアーキテクチャ

Page 28: デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~

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/

Page 29: デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~

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

Page 30: デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~

3. 事例 ③クラウド上でセンサーデータのリアルタイム判定+集計

Copyright © Acroquest Technology Co., Ltd. All rights reserved. 30

① Cloudn(クラウド・エヌ)上で、センサーデータをリアルタイムに収集・処理

② リアルタイムで、データの閾値判定処理と一定間隔での集計処理を、常時並列実行

表示用 データ保存

結果の出力

イベント 受信

一時 データ保存

センサー群

取得

解析

保存

取得

保存

グラフ表示

RabbitMQ

判定

通知

リアルタイム 閾値判定

ストリーム データ集計

Storm

Page 31: デブサミ2014-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から簡単に利用できる

Page 32: デブサミ2014-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

Page 33: デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~

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

Page 34: デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~

5. Stormでオンライン機械学習 Stream-ML

Copyright © Acroquest Technology Co., Ltd. All rights reserved. 34

センサー データ

ログ

通信 データ

SNS データ

インメモリDB

学習結果の オンライン更新

ストリーム データ

Stream-ML

クラスタリング 異常値検知

評価結果

学習結果をオンラインで更新しながら ストリームデータを解析・評価

Page 35: デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~

5. Stormでオンライン機械学習 Stream-ML

Copyright © Acroquest Technology Co., Ltd. All rights reserved. 35

モチベーション

①イベント処理 ⇒ CEP ⇒ 機械学習 on ストリームデータ処理

②スケーラブル + 高信頼性で、リアルタイム系で 使える機械学習のための機能が欲しかった

③チャレンジ!!(できたらカッコ良さそう)

Page 36: デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~

5. Stormでオンライン機械学習 Stream-ML

Copyright © Acroquest Technology Co., Ltd. All rights reserved. 36

特長

クラスタリング (K-means)

外れ値検知 (LOF)

変化点検出 (ChangeFinder)

対応済みのアルゴリズム

① スケーラビリティを備えた高速分散処理

② 機械学習のアルゴリズム単体ではなく、 データ分析全体のリアルタイム分散処理が可能

Page 37: デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~

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

Page 38: デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~

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)

Page 39: デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~

Copyright © Acroquest Technology Co., Ltd. All rights reserved. 39

1. ビッグデータの処理は、リアルタイム性を求められる時代になってきた

• ストリームデータ処理は、低レイテンシで大量のデータを 常時処理する方式であり、リアルタイムの処理に向く

2. Stormは、ストリームデータ処理を簡単に実現するための フレームワーク

3. Stormを利用したストリームデータ処理は、応用範囲が広い

• 処理のパイプ、バッチ処理との連係、機械学習なども可能にする

• AcroMUSASHI Stream-ML 使ってみてください

本日のまとめ

Page 40: デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~

Copyright © Acroquest Technology Co., Ltd. All rights reserved. 40

Thank you

Infrastructures Evolution