Taste of Tech Topics

Acroquest Technology株式会社のエンジニアが書く技術ブログ

Twitter Stormのデバッグをするには?(その1


こんにちは。kimukimuです。

今回は前回までの流れとは少し違いますが、
Twitter Stormをデバッグする方法について書きます。

というのも、HadoopやStorm系の分散プラットフォーム上でシステムを開発する場合、
処理がどこを飛び交うかが非常に難解です。

なので、開発時点で出来る限り問題を潰しておきたい・・・という事情があります。
そんなわけで、Twitter Stormでデバッグができるのかを試してみようというわけです。

・・・尚、途中でマシンがしばらくお亡くなりになっていたので、
Stormのバージョンは現行の最新の0.6.1ではなく、0.6.0になっています。ご了承ください。

1.どんな環境でデバッグを行うの?

今回デバッグを目指すのは、
Windowsのローカルクラスタ環境(下記)とします。

本来であればStormはNimbusという管理サーバを含んだ分散クラスタ上で動作します。
ですが、それを縮退した構成でまずは確認してみよう、というわけです。

なお、Storm開発者のnathanさん曰く、
「Stormの分散構成をWindows上で構築するのは目的としていない。
 但し、LinuxのStormクラスタに対して
 トポロジを設定することはWindowsからもできるようにしたい。(既に実現済)」
なので、Windows上で行う今回の試みはあくまでローカルクラスタ限定です。

また、ローカルクラスタ用であってもThriftを用いたトポロジ初期化を伴う
DRPCTopologyなども使えません。
#Windows用のThriftライブラリをビルドすればいいのですが、それはまた別の回に。

2.ローカルデバッグのための環境構築

では、環境構築に入ります。
といっても分散環境ではないため、やることは非常にシンプルです。
下記の3つで終わります。

  • storm-starterプロジェクトをダウンロード
  • 依存ライブラリをダウンロード
  • Storm-0.6.0.zipをダウンロードして展開

3.Storm-Starterプロジェクトをダウンロード

まずは下記のコマンドを実行して、Storm利用のサンプルとして公開されている
Storm-Starterプロジェクトをダウンロードします。

> git clone https://github.com/nathanmarz/storm-starter storm-starter

尚、gitがインストールされていない場合、
Windows用Gitバイナリのmsysgitをインストールして、
【インストール先のbinディレクトリ】にパスを通せばOKです。

ダウンロードが終わったら、storm-starterプロジェクト配下の「src/jvm」ディレクトリ配下の
ソースコードEclipseプロジェクトのソースフォルダにコピーします。
下記のようになりますね。

4.依存ライブラリをダウンロード

次は、storm-starterプロジェクトの依存ライブラリをダウンロードします。
storm-starterプロジェクト配下の「project.clj」をみると、下記の内容になっています。

■project.clj

(defproject storm-starter "0.0.1-SNAPSHOT"
  :source-path "src/clj"
  :java-source-path "src/jvm"
  :javac-options {:debug "true" :fork "true"}
  :resources-path "multilang"
  :aot :all
  :jvm-opts ["-Djava.library.path=/usr/local/lib:/opt/local/lib:/usr/lib"]
  :repositories {
                 "twitter4j" "http://twitter4j.org/maven2"
                 }

  :dependencies [[org.clojure/clojure "1.2.0"]
                 [org.clojure/clojure-contrib "1.2.0"]
                 [org.twitter4j/twitter4j-core "2.2.5-SNAPSHOT"]
                 [org.twitter4j/twitter4j-stream "2.2.5-SNAPSHOT"]
                 ]

  :dev-dependencies [[storm "0.6.0"]
                     ])

なので、clojure/clojure-contrib/twitter4j-core/twitter4j-streamを
依存ライブラリとしてダウンロードします。

clojure/clojure-contribはClojureのページから、
twitter4j-core/twitter4j-streamはTwitter4Jのページからダウンロードします。

尚、Twitter4jについては2.2.5-SNAPSHOTがすでに正式版になっているため、
2.2.5のバージョンをダウンロードすればOKです。

上記の2ページから下記のライブラリをダウンロードして、ビルドパスに追加します。

  • clojure-1.2.0.jar
  • clojure-contrib-1.2.0.jar
  • twitter4j-core-2.2.5.jar
  • twitter4j-stream-2.2.5.jar

5.Storm-0.6.0.zipをダウンロードして展開

次はStorm自体をダウンロードします。
Storm-0.6.0.zipをダウンロードして展開し、
下記のファイルをstorm-starterプロジェクトのビルドパスに追加します。

  • storm-0.6.0.jar
  • libディレクトリ配下のファイル(storm-starterとかぶる場合はstorm-starterを優先)

下記のようになり、ビルドが通ればデバッグの準備は完了です。

次回は実際に動かしながら説明を行いますね。