s4 ドキュメント (v0.3.0)

スタートガイド

«  チュートリアル   ::   目次   ::   複数ノードでの S4 の実行  »

スタートガイド

デフォルトでは、S4 は単一ノード構成のクラスタを実行します。また、デフォルトでは、S4 は (ZooKeeper などの) クラスタ管理システムを使わずに実行されます。このデフォルト設定は簡単に変更できます。

ここで説明する手順は、次の環境でテストされています。

S4 のセットアップ

  • s4 をソースディレクトリ (<source_base>) にクローンします。
    • cd <source_base>
    • git clone git://github.com/s4/s4.git
  • cd s4
  • git checkout tags/v0.3.0
  • ./gradlew allImage
  • cd build/s4-image/
  • export S4_IMAGE=`pwd`

サンプルアプリケーションのセットアップ

  • ソースディレクトリ (<source_base>) にサンプルをクローンします。
    • cd <source_base>
    • git clone git://github.com/s4/twittertopiccount.git
  • cd twittertopiccount
  • git checkout tags/v0.3.0
  • ./gradlew install
  • アプリケーションをデプロイします: ./gradlew deploy
  • cd build/install/twitter_feed_listener
  • export TWIT_LISTENER=`pwd`

実行

サンプルアプリケーションが、 $S4_IMAGE/s4-apps の下の twittertopiccount という名前のディレクトリにできているはずです。このサンプルアプリケーションは、Twitter Spritzer をリスンし、上位 10 のハッシュタグを記録します。サンプルアプリケーションは、次の要領で実行できます。

  • 環境変数 JAVA_HOME を設定します。S4 のスクリプト群は、java コマンドが ${JAVA_HOME}/bin にあることを前提に動作します。

  • S4 ノードを起動します。

    $S4_IMAGE/scripts/start-s4.sh -r client-adapter &

一連の初期セットアップメッセージが表示されます。セットアップメッセージの最後は、およそ次のようになっているはずです。

[/home/robloc/githubimage/s4_apps/twittertopiccount/twittertopiccount_conf.xml]
Adding processing element with bean name topicExtractorPE, id topicSeenPE
adding pe: io.s4.example.twittertopiccount.TopicExtractorPE@6b496d
Using ConMapPersister ..
Adding processing element with bean name topicCountAndReportPE, id topicCountAndReportPE
adding pe: io.s4.example.twittertopiccount.TopicCountAndReportPE@11f23e5
Using ConMapPersister ..
Adding processing element with bean name top10TopicPE, id top10TopicPE
adding pe: io.s4.example.twittertopiccount.TopNTopicPE@2d189c
Using ConMapPersister ..

S4 ノードの log4j ログは $S4_IMAGE/s4-core/logs/s4-core にあります。

  • アダプタを実行します。

アダプタは、Twitter のステータスメッセージをサンプルアプリケーションが期待しているイベントに変換します。アダプタを実行するには、次のようにします。

$S4_IMAGE/scripts/run-client-adapter.sh -s client-adapter \
-g s4 -d $S4_IMAGE/s4-core/conf/default/client-stub-conf.xml &
  • Twitter フィードリスナーを起動します。<your-twitter-user> と <your-twitter-password> は、有効な Twitter アカウントとパスワードに置き換えてください。
$TWIT_LISTENER/bin/twitter_feed_listener <your-twitter-user> <your-twitter-password> &

現在の上位 10 のハッシュタグをチェックするには、ファイル /tmp/top_n_hashtags を覗いてみてください。なお、twittertopiccount は参照数が 4 未満のハッシュタグは含めません。したがって、ファイルが作成されるまで数分かかることがある点に注意してください。

トラブルシューティング

  • ロックの解除を待機してプロセスがハングする

赤ボタンモードで実行する場合 (すなわち、クラスタマネージャに ZooKeeper を使用しない場合)、s4 のプロセスは $S4_IMAGEs4_core/lock ディレクトリにあるロックファイルを使用します。s4 Java プロセスを KILL (9) シグナルで kill した場合、その Java プロセスのロックファイルは消去されない可能性があります。したがって、その後に実行するロードジェネレータまたは s4 ノードのプロセスは、ロックが解除されるのを待ってハングすることがあります。その場合、次のようなメッセージが表示されます。

Process taken up by another process lockFile:/Users/robbins/github/s4/build/s4-image/scripts/../s4-core/lock/s4s4node-0
processAvailable:false

この問題を回避するには、常にデフォルトシグナルでプロセスを kill するようにします。プロセスをフォアグラウンドで実行している場合は、 Control-c を入力するのも適切な方法です。

ロックファイルまわりでトラブルが生じた場合には、次のことを行ってください。

  • すべての (アダプタを含む) s4 プロセスを kill します。
  • $S4_IMAGE/s4-core/lock にあるすべてのファイルを削除します。
  • プロセスを実行し直します。

«  チュートリアル   ::   目次   ::   複数ノードでの S4 の実行  »