15
JubaQLご紹介 NTTソフトウェアイノベーションセンタ 湯原基貴 Copyright©2016 NTT corp. All Rights Reserved.

JubaQLご紹介

Embed Size (px)

Citation preview

Page 1: JubaQLご紹介

JubaQLご紹介

NTTソフトウェアイノベーションセンタ 湯原基貴

Copyright©2016 NTT corp. All Rights Reserved.

Page 2: JubaQLご紹介

アジェンダ

• はじめに

• JubaQLって何?

• JubaQLを使ってみる

• おわりに

Copyright©2016 NTT corp. All Rights Reserved.

Page 3: JubaQLご紹介

はじめに

• Jubatus 0.8.0でリリースされた機能

• Jubatus本体と比べて知名度がいまいち....

• この機会に簡単にご紹介させていただきます

この後、JubaQLが話題がでたことはない・・・

Copyright©2016 NTT corp. All Rights Reserved.

Page 4: JubaQLご紹介

JubaQLって何?

• 機械学習に特化したDSL • SLQ-Likeな操作感覚でJubatusによる機械学習を実行可能

• その他にもこんな特徴が • ストリームデータソースに対応

• ストリームデータソース(ex. Apache Kafka)から継続的にデータを受け取り処理し続けることができる

• カスケード処理

• サーバ側だけでストリームデータを加工することができる

• トリガーベースのアクション

• ユーザ定義関数(UDF)とストリームデータに対して特定の条件が満たされた時にUDFを実行するトリガーを設定することができる

• 時系列データ分析

• ストリーム上でタイムウィンドウを定義し、タイムウィンドウ内で学習・分析が可能

Copyright©2016 NTT corp. All Rights Reserved.

Page 5: JubaQLご紹介

JubaQLって何?

• 機械学習に特化したDSL • SLQ-Likeな操作感覚でJubatusによる機械学習を実行可能

• その他にもこんな特徴が • ストリームデータソースに対応

• ストリームデータソース(ex. Apache Kafka)から継続的にデータを受け取り処理し続けることができる

• 静的データソース(ローカルファイル、HDFS)からデータを読み込み、生ストリームデータを分析するようなシームレスな連携が可能

• カスケード処理

• サーバ側だけでストリームデータを加工することができる

• トリガーベースのアクション

• ユーザ定義関数(UDF)とストリームデータに対して特定の条件が満たされた時にUDFを実行するトリガーを設定することができる

• 時系列データ分析

• ストリーム上でタイムウィンドウを定義し、タイムウィンドウ内で学習・分析が可能

Copyright©2016 NTT corp. All Rights Reserved.

Page 6: JubaQLご紹介

JubaQLって何?

• アーキテクチャ • Spark(YARN)基盤上でJubatusを実行

• 複数セッションを同時生成

• セッションごとにJubatus分散構成をYARN上に構築

Hadoop (YARN)

Spark

JubatusOnYarn

JubatusOnYarn

Client

Gateway

Processor

HTTP JubaQL クエリと処理結果を

JSON 形式で送受信 (Gateway/Processor間も同様)

HTTP

・クライアントごとにセッションを生成 ・セッション毎に Processor を生成 (spark-submit 経由で Spark 上に起動) ・クライアントのセッションごとに 適切な Processor に処理を転送

: :

Kafka / HDFS / Local File

セッション1

Proxy Serve

r

RPC RPC

Client Processor

HTTP HTTP

セッション2

Proxy Serve

r

RPC

・受信した JubaQL クエリを処理 ・JubatusOnYarn を YARN に投入 ・現行版 Jubatus に対し RPC を発行

ZooKeeper

Server

Server RPC

Copyright©2016 NTT corp. All Rights Reserved.

Page 7: JubaQLご紹介

JubaQLを使ってみる

• 使ってみよう 1. データソースの作成

2. 学習モデルの作成

3. 学習モデルとデータソースの結びつけ

4. 処理開始

5. 分析の実行

Copyright©2016 NTT corp. All Rights Reserved.

Page 8: JubaQLご紹介

JubaQLを使ってみる

• データソースの作成(CREATE DATASOURCE)

create datasource anomalysource from ( STORAGE: 'file:///home/vagrant/anomaly.json', STREAM: 'kafka://localhost:2181/anomaly/test-consumer-group‘ )

ローカルファイルとストリームデータソース(Aapache kafka)を指定

Copyright©2016 NTT corp. All Rights Reserved.

Page 9: JubaQLご紹介

JubaQLを使ってみる

• 学習モデルの作成(CREATE MODEL) • 異常検知(Jubaanomaly)機能を例に

create ANOMALY model anomalymodel as * CONFIG '{"parameter" : {"nearest_neighbor_num" : 5, "reverse_nearest_neighbor_num" : 5, "method" : "inverted_index_euclid", "parameter" : {} }, "method" : "lof" }'

Jubaanomalyを指定

Jubaaomalyの設定

Copyright©2016 NTT corp. All Rights Reserved.

Page 10: JubaQLご紹介

JubaQLを使ってみる

• 学習モデルとデータソースの結びつけ(UPDATE MODEL) • 学習で利用するJubatusのメソッドを指定

• データソースの全データについて指定されたメソッドで学習モデルが更新される

• 次の操作で処理がスタートする

update model anomalymodel using add from anomalysource

データソースを指定

Jubaanomalyのaddメソッドを指定

学習モデル

Copyright©2016 NTT corp. All Rights Reserved.

Page 11: JubaQLご紹介

JubaQLを使ってみる

• 処理開始(START PROCESSING) • データソースに対する処理を開始する

• 学習モデルが更新される

start processing anomalysource

データソースを指定

Copyright©2016 NTT corp. All Rights Reserved.

Page 12: JubaQLご紹介

JubaQLを使ってみる

• 分析の実行(ANALYZE) • 学習モデルに対して分析を実行する

analyze '{"id":3}' BY MODEL anomalymodel USING calc_score

Jubaanomalyのメソッドcalc_score(指定したデータのLOFを参照する)を表示

指定したメソッドのパラメータ

学習モデル

Copyright©2016 NTT corp. All Rights Reserved.

Page 13: JubaQLご紹介

【参考】Jubatusを使ってみる(発展編)

• 分析結果からストリームを作成することができる

• 以下のコマンドを追加することでJubaQLだけで分析結果を逐次HTTP送信することが可能

1. データソースの作成

2. 学習モデルの作成

3. 学習モデルとストリームモデルの結びつけ

4. 新ストリームの定義(CREATE STREAM FROM ANALYZE)

• データソースの各データを分析し、分析結果を加えた新たなストリームを定義

5. トリガ関数の定義(CREATE TRIGGER FUNCTION)

• ストリームに対する処理を定義する

• HTTPリクエストやemailの送信が可能

6. トリガの作成

• ストリームに対してトリガ関数を実行する

7. 処理開始

• HTTPリクエストやemailを送信するためのjqlオブジェクトが実装されている

Copyright©2016 NTT corp. All Rights Reserved.

Page 14: JubaQLご紹介

【発展】Jubatusを使ってみる(発展編)

• JubaQLを使った異常検知

20160616 GET /index.html 200 ………

アクセスログ

ブラウザからのアクセス

ログの収集

ログを queueにpush

ログを取得

LOFの計算

LOFの監視

Copyright©2016 NTT corp. All Rights Reserved.

Page 15: JubaQLご紹介

おわりに

• JubaQLにより • ストリームデータソースに対する機械学習が容易

• SQL-likeなクエリ言語により、非プログラマでも機械学習が利用可能

• JubaQLの問題点 • インストールが大変

• spark,yarn,hdfs,zookeeper....

• Spark 1.2.1のみ対応(最新版は1.6.1。2.0も見えてきた)

• みなさまのコミットお待ちしています!

Copyright©2016 NTT corp. All Rights Reserved.