はじめに
こんにちは、Python界の情弱です。今日はPython Developers Festa 2012.03に来ています。Python最近書いてなさすぎでやばいので、Riakのクライアントを自作してみようかと思い、とりあえずRiakの環境をMBP上に構築しました。
The Riak Fast Track
Riakのインストール
まずはパッケージをインストールする。
% tar xzf riak-1.1.1.tar.gz % cd riak-1.1.1 % make rel % cd rel/riak % ulimit -n 1024 % bin/riak start % bin/riak-admin test Successfully completed 1 read/write cycle to 'riak@127.0.0.1' % bin/riak stop ok
ulimitは最低でも1024ないといけないのであらかじめ設定しておきます。テストも通ったので、次はコマンドで使ってみます。
複数ノードを立ててみる
ビルドができたのでThe Riak Fast Trackを読み進めます。
% make devrel % cd dev; ls dev1 dev2 dev3 dev4
これでテスト用のノードが4つ作成されました。そのうち3つ起動する。
% dev1/bin/riak start % dev2/bin/riak start % dev3/bin/riak start
dev2とdev3をdev1に追加してみる。
% dev2/bin/riak-admin join dev1@127.0.0.1 Sent join request to dev1@127.0.0.1 % dev3/bin/riak-admin join dev1@127.0.0.1 Sent join request to dev1@127.0.0.1
リングのstatsを確認してみる。色々出てくるけど、中で"ring_ownership"を確認すると、各ノード
"ring_ownership": "[{'dev3@127.0.0.1',21},{'dev2@127.0.0.1',21},{'dev1@127.0.0.1',22}]", "ring_creation_size": 64,
パーティションサイズというのが何かは置いといて、リング全体のサイズが64で、各ノードで21, 21, 22と分担していることがわかる。さらにノードを1つ追加して、statsを見てみると
"ring_ownership": "[{'dev4@127.0.0.1',16}, {'dev3@127.0.0.1',16}, {'dev2@127.0.0.1',16}, {'dev1@127.0.0.1',16}]", "ring_creation_size": 64,
テストでファイルを置いてみる
テストでcURL使ってHTTP PUTで画像ファイルを置いてみる。
% cp /Users/ymotongpoo/Pictures/test.jpg . % curl -X PUT http://127.0.0.1:8091/riak/images/1.jpg \ -H "Content-type: image/jpeg" --data-binary @test.jpg
置いたことは http://127.0.0.1:8091/riak/images/1.jpg にアクセスして確認できた。
おまけ
Mac OS X用のRiakのビルド済みtar.gz入れたらめんどかった。
% tar xzf riak-1.1.1-osx-x86_64.tar.gz % cd riak-1.1.1 % bin/riak start % riak start riak: line 5: cd: riak: Not a directory !!!! !!!! WARNING: ulimit -n is 256; 1024 is the recommended minimum. !!!! mkdir: /log: Permission denied !!!! !!!! WARNING: /log not writable; logs and crash dumps unavailable. !!!! egrep: /etc/vm.args: No such file or directory vm.args needs to have either -name or -sname parameter.
勝手に/logとか期待してんじゃねえぞ、という話。