Subcribe via RSS

KestrelをJavaから利用する

2011/12/20 | Posted in java

kestrelのセットアップについては以前の記事を参照してください。




以下では、JavaのプログラムからKestrelのキューを利用する方法を説明します。

Kestrelは、memcachedプロトコルで利用できるので、memcachedのライブラリなら基本的に大丈夫だと思います。
でも、kestrelに対応しているというところと、パフォーマンスがよさそうなところから、Xmemcachedというライブラリを利用します。

参考:



Xmemcachedのダウンロード

JavaプログラムからKestrelを利用するために、Xmemcachedというmemcached用のライブラリを利用します。
http://code.google.com/p/xmemcached/downloads/list からxmemcached-1.3.5-bin-with-dependencies.tar.gz をダウンロードして利用します。


プログラム例

こんな感じで使えます。

import net.rubyeye.xmemcached.MemcachedClient;
import net.rubyeye.xmemcached.XMemcachedClientBuilder;
import net.rubyeye.xmemcached.command.KestrelCommandFactory;
import net.rubyeye.xmemcached.exception.MemcachedException;
import net.rubyeye.xmemcached.utils.AddrUtil;

(略)
{
    private XMemcachedClientBuilder builder = null;
    private MemcachedClient client = null;
    int expirationTime = 0;
    String queueName = "test";
    Striing host = "localhost";
    int port = "22133";
  
    builder = new XMemcachedClientBuilder(AddrUtil.getAddresses(host + ":" + port));
    builder.setCommandFactory(new KestrelCommandFactory());
    client = builder.build();

    client.set(queueName, expirationTime, "hello");

    String res = client.get(queueName);
    System.out.println(res);
}

参考:


エラーが出るときは、ketrelの設定を確認してみてください。

docs/guide.md at master from robey/kestrel – GitHub




Tags: ,

Kestrelをcentosにセットアップ

| Posted in centos

# 2011/12/01時点のものです、最新のものがあるかもしれないので確認してください。

Kestrelは、twitterが使ってるらしいメッセージキューです。

前準備


まずgitが必要となるので、gitを使えるようにしてください。

sbtのインストール


sbtというのはscalaをビルドするためのツールです。
sbtというコマンドを作成します、ディレクトリなどは適宜読み替えてください。
sbtコマンドが、実行するディレクトリに依存しているので注意してください。
# install scala, sbt
wget http://simple-build-tool.googlecode.com/files/sbt-launch-0.7.4.jar
mv sbt-launch-0.7.4.jar ~/bin/
echo 'java -Xmx512M -jar `dirname $0`/sbt-launch-0.7.4.jar "$@"' >> ~/bin/sbt
chmod +x ~/bin/sbt

kestrelのインストール

次はkestrelをインストールします。
# install kestrel
git clone git://github.com/robey/kestrel.git
cd kestrel
sbt clean update package-dist

(時間がかかる)

mkdir /usr/local/kestrel
cp -R ./dist/kestrel-2.*.* /usr/local/kestrel/
ln -s /usr/local/kestrel/kestrel-2.*.* /usr/local/kestrel/current
mkdir /var/run/kestrel


daemonのインストール

daemonを使ってkestrelの起動の管理ができるようになります。


#install daemon

wget http://libslack.org/daemon/download/daemon-0.6.4.tar.gz
cd daemon-0.6.4
./configure
make
make -d install

kestrelの実行

ここまでが全てうまく行っていれば、
/usr/local/kestrel/current/script/kestrel.sh
から実行できます。

kestrel.sh内のHeapサイズが4Gとなっているので、動かない場合はそこを調整してみてください。

直接jarを叩いて実行もできます。
java -jar /usr/local/kestrel/current/kestrel-2.0.0-SNAPSHOT.jar

動作確認


kestrelを起動したら、telnetで接続して動作を確認します。
$ telnet 127.0.0.1 22133
Trying 127.0.0.1... 
Connected to 127.0.0.1.
Escape character is '^]'. 
STATS 
STAT uptime 185 
STAT time 1295254423 
STAT version 1.2.9-SNAPSHOT 
STAT curr_items 0 

以上です。


参考にしたページ:




Tags: , ,

twitter, google, facebookにおけるデータ処理に関する記事

2011/12/10 | Posted in cloud, web

ちょっと最近調べてたことのまとめ。
twitter, google, facebookの技術の話を見てました。
またいいのがあれば追加していきます。








Tags: , , ,

Stormをlocalmodeで実行する

2011/11/18 | Posted in cloud, storm

stormについては

を参照してください。

今回は
の続き。

localmodeで実行ということは、stormのnimbusやsupervisorといった分散のための仕組みを利用せずに、とりあえずstormのプログラムを動かしてみる、というものです。


storm-starterのダウンロード


サンプルコードをダウンロードします。
nathanmarz/storm-starter – GitHub
$ git clone git://github.com/nathanmarz/storm-starter.git

eclipseに読み込む

前回作成途中だったJava projectにサンプルのプログラムをimportします。

projectの src に import > general > FileSystem で先ほどダウンロードした storm-starterのしたの storm-starter/src/jvm/storm を”From Directory”に指定して、”Create Top-level folder”にチェックを入れます。

次に、project のトップに storm-starter/multilang/resoucesをimportします。



こんな感じになるはず。

Storm starter

ここでエラーが出ている場合、stormが最新版じゃない可能性があります。


JARをexport

そして、このprojectをJARファイルに固めます。

Export > Java > JAR fileから、StormStarterプロジェクトを.classpathや.projectを除いてJARにします。


warningが出るけど気にしない。


実行

今作成したJARファイルをstormで実行します。
前回の準備で正しくpathが通っていればstormコマンドが利用できるはずです。
(うまく動かない場合はpermissionなどを確認してください)
$ storm jar StormStarter.jar storm.starter.ExclamationTopology

これで、ダーッと文字が出て、したのようにビックリマークがついた単語が出ていれば成功です。
ExclamationBoltのemitのログが表示されています。
....
11367 [Thread-25] INFO  backtype.storm.daemon.task  - Emitting: class storm.starter.ExclamationTopology$ExclamationBolt source: 2:3, stream: 1, id: {}, [golda!!!]
....

twitterのstreamを使うTopologyは例えば、
$ storm jar StormStarter.jar storm.starter.PrintSampleStream [username] [password]
のようなものがあります。

今回使ったstormコマンドは、
storm jar [jarファイル] [メインクラス] (引数…)
のようにjarを指定してTopologyの実行を行いました。

他のTopologyも同様に動くと思いますが、wordcountは環境によってはうまく動作しないかもしれません。


以上で、localmodeでstormのプログラムを動かすことが確認できました。


参考




Tags: ,

EclipseでStormの開発環境を作る

2011/11/17 | Posted in cloud, storm

Stormはtwitterが公開しているリアルタイム分散処理フレームワークです。
以前のエントリを参照ください。

twitterが発表したリアルタイム分散処理フレームワークStorm | tjun memo


今回は、その開発環境を作るメモ。

0. 準備

EclipseとJavaは入れて、Javaのpathは通してください。
$ echo $JAVA_HOME                                                        ~/work/storm
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home


1. stormのダウンロード


https://github.com/nathanmarz/storm/downloads から最新のstormをダウンロードして、zipを解凍してください。(2011/2/3の安定verは0.6.2)

そして、storm/binにpathを通します。

$ wget https://github.com/downloads/nathanmarz/storm/storm-0.6.2.zip --no-check-certificate
$ unzip storm-0.6.2.zip
$ sudo cp -R storm-0.6.2 /usr/local/
$ sudo ln -s /usr/local/storm-0.6.2 /usr/local/storm
$ export STORM_HOME=/usr/local/storm
$ export PATH=$PATH:$STORM_HOME/bin


2. twitter4jのダウンロード


Storm-starterのtwitter関連のサンプルを実行する場合は、Twitter4j(2.2.5+)をダウンロードします。他のサンプルもあるので、とりあえず飛ばしても大丈夫です。
http://twitter4j.org/en/index.html
これも解凍してください。

twitter4j/lib以下のJARファイルをstormから利用するため、JARをstormのlibディレクトリに置きます。
$ sudo cp twitter4j/lib/*.jar /usr/local/storm-0.5.4/lib/


3. Eclipseでプロジェクトの作成


stormのプログラムのために、設定を行います。

  • 3-1.
    新規のJava projectを作成

  • 3-2.
    Project Libraryの”Add External JARsに、先程ダウンロードしたstorm以下にあるJARを入れます。
    必要なのは storm/storm-*.*.*.jarstorm/lib/以下の全てのJAR になります。

  • 3-3.
    twitter関連のサンプルを実行する場合、同じくJARをlibraryに追加します。
    先ほどダウンロードして解凍した twitter4j/lib/以下の twitter4j-core-2.2.5.jartwitter4j-stream-2.2.5.jar を追加。



準備は以上です。

次回はstormのサンプルを実行する部分を説明します。

参考




Tags:
  • 書いてる人:

    Junichiro Takagi
    高木潤一郎

    http://tjun.jp
    mail@tjun.jp

    未踏でクリエータやってました。メーカーでエンジニアやってます。
    このブログは、会社とは関係なく個人の意見を書いています。

    RSS:


  • friendfeed: