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

夢とガラクタの集積場

落ちこぼれ三流エンジニアである管理人の夢想=『夢』と、潰えた夢=『ガラクタ』の集積場です。

Storm

Twitterの新ストリーム処理基盤、Heronのアーキテクチャは?(詳細

こんにちは。前回論文の前半部、Stormの問題点を読みましたが、 今回は中盤部、Twitter Heronのアーキテクチャについてです。 あと、後半部のStormとHeronの性能比較については下記のページでまとめているのの 事例が増えただけでしたので、とりあえず省略す…

Twitter Heronの論文でのStormの問題点は?(詳細

こんにちは。前回あーいう形でサマリ記事を読んだので、次は実際に論文を読んでみるしかないだろう・・ ということで、Twitter Heronの論文を読んでみました。 今回は前半の、Stormの問題点を記述した個所と、設計検討結果についてです。Twitter Heronただ、…

Twitter Heronの論文でのStormの問題とHeronの利点は?(サマリ

こんにちは。前回TwitterBlogのHeronの記事を読み込んでみたので、 次は論文を読むか、とはりきってみた所、有料だったので撃沈した今日この頃です。 この後開発が進んでいくことを考えると今買って読んでしまうか悩みますね・・と思っていた所、下記のPaper…

Twitter HeronはStormに比べてどう進化しているのか?

こんにちは。今月頭、TwitterがHeronという新しいリアルタイム解析基盤について発表していました。 読んでみると、StormとAPIの互換性を保ったまま新しいHeronというリアルタイム解析基盤を開発したそうな。Flying faster with Twitter Heron | Twitter Blog…

StormのコマンドはClojureを使用しているので起動が遅い?

こんにちは。では、引き続きStormのコマンドが遅い理由について確認してみます。 1.Topology起動と、他のコマンドの違いは何なのか? 前回は、単にJVMの起動が遅いのではないか、レベルでとどまってしまいましたが、それではわからない点が1つあります。 「…

Stormのコマンドが遅い理由とは?

こんにちは。とりあえず気になることができたので、しばらくStormネタです。 1.Stormを使っていて気になる所 皆さんはStormを実際に使ってみたことがあるでしょうか?私は使って最初のうちは気にならなかったのですが、最近気になってきたことがあります。 …

Storm-0.9.4のバージョンアップ内容

こんにちは。 少し間が空いてしまったのですが、 Stormが0.9.4にバージョンアップしたので、バージョンアップ内容をざっとまとめてみます。 STORM-559: ZkHosts in README should use 2181 as port. storm-kafkaにおいて、READMEにあるZooKeeperの接続設定例…

kinesis-storm-spoutのソースコードを読んでみる(その4

こんにちは。前回初期化処理周りの確認が終わったので、今回はメッセージの取得→送信や、 Ack/Fail機構周りを見ていきます。 尚、実際に見てみるとわかりますが、かなり煩雑な記述です(汗ですので、とりあえず概要を知りたい方は 下記のポイントを理解でき…

kinesis-storm-spoutのソースコードを読んでみる(その3

こんにちは。とりあえず前回で大体の構造がわかったので、 今後はStormで基本となる下記の処理単位ごとに実際に行われる処理を見てみます。 今回は初期化/有効化/停止周りまで。 コンストラクタ Stormではコンストラクタと、Topologyを生成するクラスの中…

kinesis-storm-spoutのソースコードを読んでみる(その2

こんにちは、前回に引き続き、 kinesis-storm-spoutのソースコードを読んでいきます。kinesis-storm-spoutのコードを確認した所、 コンポーネント構成は大体下記のようになっていました。 #単なるエンティティ等は省いています。 尚、下記のクラスについて…

kinesis-storm-spoutのソースコードを読んでみる(その1

こんにちは。今更感はありますが、Amazon Kinesisが最近個人的に熱くなり、改めて使い方を見ています。 aws lambdaでKinesisのイベントを取得することも出来ますし、色々組み合わせて使えそうなんですよね。ただ、当然Kinesisは単体では使用できないため、 …

Stormクラスタのコンテナ化に向けて通信周りを整理してみる

こんにちは。最近Dockerをはじめとしたコンテナを用いたアプリケーションの運用が広まっている・・・ ということで、Stormクラスタをコンテナのオーケストレーションツールで 構築できないか、と考えています。出来るようになれば、よりStormがお手軽に使え…

Storm-0.9.0系の各プロセスの基本JVMオプションまとめ

こんにちは。現在遅ればせながらStorm-0.9.0系を動作させて試しているのですが、 まずこの後色々やってみるためのベースとして、各プロセスのJVMオプションを確認しておきます。何故こんなことを行うかというと、StormではWorkerプロセスを管理するのは Stor…

Genn.aiでTopologyを定義してみる

こんにちは。前回は使い方がわからなかったGenn.aiですが、ドキュメントも公開されて使い方がわかったため、 とりあえず再度試してみることにします。http://pages.genn.ai/まず、gungnirのCLIを起動する前のヘルプを確認してみます。 > ./gungnir -h Unreco…

リアルタイム解析プラットフォームGenn.aiのクライアントを動かしてみる

こんにちは。昨晩面白そうなページを見つけたので早速試してみました。リクルートテクノロジー製のリアルタイムプラットフォームで、StormとKafkaを用いて構築されたGenn.ai(源内)です。■紹介ページ http://genn.ai/ ■登録ページ(動作ホスト兼?) http:/…

StormのMLで流れていた情報まとめ(2013/07〜2013/08)

こんにちは。情報が確定では無かったり、内部の話になってすぐどうという話ではない情報をちょくちょくMLから拾ってきていますが、 このまま死蔵するのも何なので、記事として残しておきます。 ・・・さすがに、最近は新規の情報は減ってきたのでペースは以…

StormのMasterSourceをビルドしてみる

こんにちは。最近外を移動する際に日陰を移動できるルートを確認しながら移動する癖がつきつつある今日この頃です。 別に日光に当たったからと言って黄色い汁になって溶けてしまったりはしないんですが、まぁ一応w さて、前回Storm0.8.2系のビルド手順を確…

Storm0.8.2をビルドしてみる

こんにちは。ここ数日暑過ぎて半分溶けている感覚がする今日この頃です。溶ける・・・とは全く関係ないのですが、 最近Stormのコア側に一部修正を入れて試してみたいことがあったので、ビルドをした時の手順をまとめてみます。 対象バージョンはまずは現状の…

1人、Stormソースコードを読んでみよう(No.3

こんにちは。 なんか1年以上忘れ去っていましたが、 最近StormのClojureコードを読むことが増えてきましたので、とりあえずゆるゆると再開してみます。 1.まず重要なのはClojureのコードです これはStormを扱う上でいうまでもない内容になりますね。 ・・・…

TwitterでつぶやいたStormの雑多な情報まとめ(その9

こんにちは。#stormjp のタグでStormの雑多な情報まとめその9です。 とりあえず、2013/02までの内容はこの回で収まりそうなペースです。91.DisruptorQueueから情報を取得するのはシングルスレッドとなる。 そのため、Worker数を増やすことでボトルネックが…

TwitterでつぶやいたStormの雑多な情報まとめ(その8

こんにちは。#stormjp のタグでStormの雑多な情報まとめその7です。 段々、終わりが見えてきたような感はありますw○81.Stormクラスタ自体のアップデートは起動しっぱなしでは無理。 安全確実を期すなら下記のフロー。 1.Topology全部落とす 2.Storm-Ni…

TwitterでつぶやいたStormの雑多な情報まとめ(その7

こんにちは。#stormjp のタグでStormの雑多な情報まとめその7です。 お、思ったより手ごわいw 71.単一のBoltからイベントの内容を見て違うBoltに分岐させたい場合、 違うStreamに書きこめば分岐が可能。Stormの開発者もその方式を推奨している。 尚、受信…

TwitterでつぶやいたStormの雑多な情報まとめ(その6

こんにちは。#stormjp のタグでStormの雑多な情報まとめその6です。 とりあえず、二桁いかない程度で終わらせる方向で。55.Storm-UIでのNimbusの表示情報の大部分はZookeeperから取得している。 (残りはNimbusのローカルファイル) そのため、Zookeeperが…

TwitterでつぶやいたStormの雑多な情報まとめ(その5

こんにちは。#stormjp のタグでStormの雑多な情報まとめその5です。 いや、思ったより呟いていた量多かったんですねw○36.StreamGroupingのうち、FieldGroupingはキーのハッシュ値で配分先が決まるContext Hashing方式。 ShuffleGroupingはラウンドロビン方…

TwitterでつぶやいたStormの雑多な情報まとめ(その4

こんにちは。#stormjp のタグでStormの雑多な情報まとめその4です。 とりあえず最後までやりきる方針で。○28.StormのNimbus、UI、Supervisorにはデフォルトでは終了コマンドはない。 Storm-Installer等一段階ラッピングするか、killで落とすしかない。▽29.T…

TwitterでつぶやいたStormの雑多な情報まとめ(その3

こんにちは。#stormjp のタグでStormの雑多な情報まとめその3です。 段々前置きとかが思いつかなくなってきましたが、とりあえず入ります^^;○19.StormとKestrelを組み合わせることで『Kestrelから取得したメッセージをStormで処理完了したことを保証する…

TwitterでつぶやいたStormの雑多な情報まとめ(その2

こんにちは。#stormjp のタグでStormの雑多な情報まとめその2です。 ちなみに呟きの過去から情報は追っていっていますが、呟いた後に判明した情報も 芋づる式に記述しています。 そのため、単に過去わかった情報だけではない・・・という構成になっています…

TwitterでつぶやいたStormの雑多な情報まとめ(その1

こんにちは。最近 Twitter上で #stormjp のタグでStormの雑多な情報を呟いているのですが、 ひたすら流れていくばかりだったため、この後ちょこちょこまとめていきます。・・・ええ、私自身さっぱり覚えていられなくなりましたので(汗とりあえずは古い方か…

YamlとJavaのエンティティをマッピング出来る?

こんにちは。前回のUbuntuパッケージは・・・とりあえず、dh_makeとdebuildの方式だと さっぱりうまくいかなかったので方針を見直し中です。上手くいったら経緯も含めてまた投稿しますね。そんなわけで、今回はStormで使用されている「Yaml」というファイル…

Ubuntu用Stormインストールパッケージを作成しよう!(その1

こんにちは。徐々に暖かくなってきていますが未だに部屋でマフラーまでしている今日この頃です。 いつまでこの寒さは続きますかねぇ・・・ 1.StormをUbuntuに導入してみたい! というのが今回の発端です。 ご存じの方もいらっしゃるかもしれませんが、 storm…

Storm0.8.1→0.8.2でStorm媒体の変更点

相当間が空いてしまっていますが、こんにちは。1月にStorm0.8.2がリリースされた・・・ということで、 まずは媒体がどういう風に変わったのか確認してみます。・・・ええ、バージョン更新する際にきちんとまとめておかないとやらかしそうなもので(汗 1.媒体…

StormからStormクラスタの情報を取得する方法(その2

こんにちは。とりあえず、次のものに移るためにも下記の2点くらいは まとめてしめましょうか^^; どんな情報が取得できるか 取得できない情報は何か? まずは情報が1かたまりとして大量に出ており、 結果なにがなにやらわからなかったため、1段階整形し…

NimbusからStormクラスタの情報を取得する方法(その1

こんにちは。前回マシンの性能を計測していたような気もしますが、 とりあえずサーバマシン選定中でいまだ手に入っていないので今回もStormネタのようです。少し前にStormがZookeeperに保存している情報を確認したのですが、 それを何か楽に取る方法はないか…

Stormが使うZookeeperの中ってどうなっているの?(まとめ

こんにちは。とりあえず、2回とりあえずコマンドラインでうって来たもののまとめです。StormのZookeeperに保存している情報は下記のような構成になっていました。 storm/ StormのZookeeperルートディレクトリ ├―workerbeats/ Workerプロセスの設定情報/Hea…

Stormが使うZookeeperの中ってどうなっているの?(その2

こんにちは。前回に引き続き、Zookeeperの中を(とりあえずわかる範囲で)見て行きます。 前回はStormのクラスタを起動した状態での確認だったので、 今回はTopologyをSubmitした状態での確認ですね。 1.TopologySubmit前の下準備 Stormの機能をフルに実行し…

Stormが使うZookeeperの中ってどうなっているの?

こんにちは。最近テーマ・・・というのも無くなりつつあるので、 とりあえずその日その日で思いついた雑多ネタを投稿していくようなノリになりそうです。ハイ。とまぁ、そういうぼやきはさておき。 1.StormはZookeeperを何に使用しているのか? StormはZooke…

Stormの内部実装を解説する資料確認してます(その6

こんにちは。引き続きメッセージ処理のページを読み進めます。今回はTaskがメッセージを受信したときの動作について。 Message処理実装 ====== ■Taskがメッセージ受信時に行う動作はローカルモードか、分散モードかで異なる1.ローカルモードにおいては…

Stormの内部実装を解説する資料確認してます(その5

こんにちは。では、StormのTuple処理の肝であるMessage Passingについて読んでいきます。 Message処理実装 ====== 本ページでは、Emit/TransferされたTupleがどう動作するかを記述する。■Workerがメッセージの転送について統括する。 1.Workerにおいて…

Stormの内部実装を解説する資料確認してます(その4

前回に引き続き、Topologyのライフサイクルの章について読み進めます。 Topologyのライフサイクル Topologyモニタリング ===== ■Nimbusは起動している間ずっとTopologyのモニタリングを行う。 1.Timerスレッドにて定期的にTopologyモニタリングタスクが…

Stormの内部実装を解説する資料確認してます(その3

少し間が空いてしまいましたが、続きになります。今回からはLifecycle of a topologyの章を確認していきます。 ・・・とりあえず書いてみましたが、ひたすらべた書きになっているため、 一通り読み終わったらわかりやすくまとめる必要がありそうですね(汗 T…

Storm0.7.2→0.8.0で使用しているライブラリの差分

こんにちは。日本時間昨日未明にStormの0.8.0がリリースされました! 性能の大きな向上、リソース配分の動的調整など、 追加機能が多いリリースですが、ライブラリもかなり更新されています。そのため、まずはライブラリを比較して差分を出してみることにし…

Stormの内部実装を解説する資料確認してます(その2

こんにちは。前回に引き続き、Stormの内部実装説明資料の確認を進めます。 1.Structure of the codebase(続き Java interfaces ======= StormのAPIインタフェースはJavaで定義されている。 主に、下記の3つのインタフェースが存在する。 IRichBolt …

Stormの内部実装を解説する資料確認してます(その1

こんにちは。最近StormのGitHubにおいて、『Stormの内部構造の解説ページ』が開設されています。 そのため、ソースコードリーディング・・・とは違いますが、 解説ページを読んで、その内容をまとめていこうと思います。 1.Structure of the codebase ===…

1人、Stormソースコードを読んでみよう(No.2

というわけで始まってしまった(?)この記録。まずは、ディレクトリの中身概要を確認してみます。 確認の結果下記のようになっていました。 Storm ├─bin 起動/環境構築スクリプト ├─conf Stormの設定ファイル ├─log4j Stormのログ出力設定ファイル ├─src │…

1人、Stormソースコードを読んでみよう(No.1

こんにちは。とりあえず、某所でStormの環境構築やクラスタ化については 書き進めるつもりですので、 こちらでは余り需要がなさそうなコンテンツを進めようと思います。そんなわけで、Stormソースコード読み記録を開始します!Stormの中身を理解する上で、も…

Twitter Stormの機能まとめメモ(Topology構築編)

こんにちは。とりあえず、Topologyについて書いて軟着陸させよう・・・ ということで、Topologyについて書きます。Topologyとは、『SpoutとBoltを組み合わせて処理ネットワークを構築する機構』です。 #または、構造自体をTopologyと呼びます。実際にどうい…

Twitter Stormの機能まとめメモ(Boltによるデータ処理、中身)

Boltのまとめその2です。とりあえず、おそらく最も単純であろうBolt、 PrinterBolt(storm-startar プロジェクト)を用いて確認します。 とりあえず、メソッドの現状わかっている用途についてはJavaDocを参照ください。 public class PrinterBolt implement…

Twitter Stormの機能まとめメモ(Boltによるデータ処理、概要)

最近うだうだ呟いているののまとめその2です。今度はデータを取得する側ではなく、処理する側を。 Boltによるデータ処理 Stormではデータを処理する際には、Boltというコンポーネントを使用する。 Boltは一つではなく、複数の階層に分けて定義することがで…

Twitter Stormの機能まとめメモ(Spoutによるデータ取得)

最近Twitter Stormについてうだうだ呟いていますので、一端まとめを。 放置しているとそのまま流れちゃうんですよねぇ。。。TwitterでTwitter Stormについて呟く辺りが微妙な所ではありますが^^; Spoutによるデータの取り込み StormではStormクラスタに対…

Twitter Stormの特徴は?

こんばんは。1か月書かずに過ごしてしまいましたが、 Twitter Stormをとりあえず確認して、動かしてみる企画再開です。まず、Twitter Storm Wikiから、 Twitter Stormの性質について確認します。まず、Twitter StormはCEP(Complex Event Processing)という…