Upload
jubatusofficial
View
5.475
Download
4
Embed Size (px)
Citation preview
JubaQLご紹介
NTTソフトウェアイノベーションセンタ 湯原基貴
Copyright©2016 NTT corp. All Rights Reserved.
アジェンダ
• はじめに
• JubaQLって何?
• JubaQLを使ってみる
• おわりに
Copyright©2016 NTT corp. All Rights Reserved.
はじめに
• Jubatus 0.8.0でリリースされた機能
• Jubatus本体と比べて知名度がいまいち....
• この機会に簡単にご紹介させていただきます
この後、JubaQLが話題がでたことはない・・・
Copyright©2016 NTT corp. All Rights Reserved.
JubaQLって何?
• 機械学習に特化したDSL • SLQ-Likeな操作感覚でJubatusによる機械学習を実行可能
• その他にもこんな特徴が • ストリームデータソースに対応
• ストリームデータソース(ex. Apache Kafka)から継続的にデータを受け取り処理し続けることができる
• カスケード処理
• サーバ側だけでストリームデータを加工することができる
• トリガーベースのアクション
• ユーザ定義関数(UDF)とストリームデータに対して特定の条件が満たされた時にUDFを実行するトリガーを設定することができる
• 時系列データ分析
• ストリーム上でタイムウィンドウを定義し、タイムウィンドウ内で学習・分析が可能
Copyright©2016 NTT corp. All Rights Reserved.
JubaQLって何?
• 機械学習に特化したDSL • SLQ-Likeな操作感覚でJubatusによる機械学習を実行可能
• その他にもこんな特徴が • ストリームデータソースに対応
• ストリームデータソース(ex. Apache Kafka)から継続的にデータを受け取り処理し続けることができる
• 静的データソース(ローカルファイル、HDFS)からデータを読み込み、生ストリームデータを分析するようなシームレスな連携が可能
• カスケード処理
• サーバ側だけでストリームデータを加工することができる
• トリガーベースのアクション
• ユーザ定義関数(UDF)とストリームデータに対して特定の条件が満たされた時にUDFを実行するトリガーを設定することができる
• 時系列データ分析
• ストリーム上でタイムウィンドウを定義し、タイムウィンドウ内で学習・分析が可能
Copyright©2016 NTT corp. All Rights Reserved.
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.
JubaQLを使ってみる
• 使ってみよう 1. データソースの作成
2. 学習モデルの作成
3. 学習モデルとデータソースの結びつけ
4. 処理開始
5. 分析の実行
Copyright©2016 NTT corp. All Rights Reserved.
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.
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.
JubaQLを使ってみる
• 学習モデルとデータソースの結びつけ(UPDATE MODEL) • 学習で利用するJubatusのメソッドを指定
• データソースの全データについて指定されたメソッドで学習モデルが更新される
• 次の操作で処理がスタートする
update model anomalymodel using add from anomalysource
データソースを指定
Jubaanomalyのaddメソッドを指定
学習モデル
Copyright©2016 NTT corp. All Rights Reserved.
JubaQLを使ってみる
• 処理開始(START PROCESSING) • データソースに対する処理を開始する
• 学習モデルが更新される
start processing anomalysource
データソースを指定
Copyright©2016 NTT corp. All Rights Reserved.
JubaQLを使ってみる
• 分析の実行(ANALYZE) • 学習モデルに対して分析を実行する
analyze '{"id":3}' BY MODEL anomalymodel USING calc_score
Jubaanomalyのメソッドcalc_score(指定したデータのLOFを参照する)を表示
指定したメソッドのパラメータ
学習モデル
Copyright©2016 NTT corp. All Rights Reserved.
【参考】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.
【発展】Jubatusを使ってみる(発展編)
• JubaQLを使った異常検知
20160616 GET /index.html 200 ………
アクセスログ
ブラウザからのアクセス
ログの収集
ログを queueにpush
ログを取得
LOFの計算
LOFの監視
Copyright©2016 NTT corp. All Rights Reserved.
おわりに
• JubaQLにより • ストリームデータソースに対する機械学習が容易
• SQL-likeなクエリ言語により、非プログラマでも機械学習が利用可能
• JubaQLの問題点 • インストールが大変
• spark,yarn,hdfs,zookeeper....
• Spark 1.2.1のみ対応(最新版は1.6.1。2.0も見えてきた)
• みなさまのコミットお待ちしています!
Copyright©2016 NTT corp. All Rights Reserved.