読者です 読者をやめる 読者になる 読者になる

Norikra Meetup #1に参加してきました

比戸(@sla)です。お手軽なストリーム向けSQL処理系Norikraの勉強会に参加してきました。

 

一言で言うと、「Norikra使われてるんだ」感と、「(自分でも)Norikra何かに使えそう」感が同時感じられる、濃密な素晴らしい勉強会だったと思います。ハッシュタグも活発で、Togetterこちらでまとめられています。

 

まず開発者の@tagomorisさんのオープニング。

"Stream processing and Norikra"

ストリーム処理のバッチ処理との違いや狙い、簡単な使い方がわかりやすく説明されてます。

 

続いて@fubaさんのレポーティングの話。

"norikra を使って速報レポート集計してみた"

元々Hiveを使っていた速報集計クエリが シンプルかつ短時間で実行可能になったそうです。

 

id:kawamurrayさんのアプリログ監視の話。

「Norikraでアプリログを集計してリアルタイムエラー通知」

LINE株式会社の運用監視に実際に使われているお話。ログとして貯める情報はリッチにしたいけど、通知するときにはサマリーが欲しい、みたいな用途の時にはNorikraを使うというのは非常に良いなと思いました。

 

@kazunori_279さんがGoogle I/Oで発表してきたらしいG流Norikra活用術の話。

"Norikra+BigQueryのラムダアーキで120k req/sのリアルタイム分析"

 

BigQueryの持つ圧倒的な処理能力を活かすため、後段のCEP的なリアルタイム処理をNorikra二段構成で書いた、というお話で解析部分を某大型案件でも実運用されてたとのことです。BigQuery Streamingで入力が簡単になったというのも嬉しい話でしたし、さらにDockerを使って10分でデプロイできちゃうというのもお手軽です。

 

休憩を挟んでサングラス姿のタゴ=モリス氏による状態保存やJVM設定などの実践編。

特にLoopbackを使いこなせればEsperで出来ない複雑な処理ができそうです。

 

@ixixiさんの

「超自然言語ストリームのリアルタイム解析&集計&可視化と応用」

残念ながら資料がまだ上がっていないようなのですが、ニコ生コメントの盛り上がりの「種類」をリアルタイムで把握するために、正規表現に寄る前処理+機械学習によるコメント分類の結果をNorikraを使って1秒単位で集計・可視化してるガチな取組みの話でした。そのためにクエリのchainを編集するツールnorikra-query-chain-editor)を作ったりScala UDFの仕組みを導入したりと盛りだくさんな内容でした。norikura-udf-jubatusの構想なども出てきましたね。

 

LINE若手社員の@yunazunoさんの、リアルタイムじゃない活用法の話。

"Norikraを非リアルタイムなデータ集計に使う試み"

 

CSV出力されたトラフィックログをJSONに変換してNorikraに投げて集計クエリを書ける話。スキーマレスなCSVに対してスクリプト処理を書くよりは、そこを分離したほうが良いというのはそうですね。

 

最後に@vananasianさんのEC2と組み合わせたDoS攻撃ブロックの仕組みの話。

"Norikra+FluentdでDoS攻撃をブロックする仕組みを作ってみた"

 

Norikraの前段として既にデファクトであるFluentdとの組合せで、記事にはインストールから全て書いてあってわかりやすいので初めてNorikra触る人にとって非常に役立つお話だったと思います。デモでは実際にDoS攻撃を発生させると通知が飛んでEC2のアクセス禁止IPに登録する処理が自動化されている様子が見られました。

 

全体的な感想としては、形式が安定しないが時々刻々溜まっていくデータに対してJSON形式でストリームとして取り出して、SQL的にリアルタイムな集計クエリを打ちたいというのは非常に汎用的な要望であり、それにFluentd+Norikraの組合せが非常に強力な解決策を提供しているんだなというのが感じられました。

 

個人的には、Jubatusにある異常検知機能がNorikraから叩けたら結構使われるんじゃないかな、と思うので、最新版の0.6.0で忘却機能が付いた&jubatus_coreが分離したところでくっつけられたらなと思います。

 

最後に主催者、発表者、会場だけでなく懇親会のビール&寿司まで提供してくれたDeNAさんに感謝を。

f:id:shoheihido:20140710153139j:plain