kumofsをMacにインストールしてみたよ

近頃都に流行るもの。分散KVS「kumofs」をMacにインストールしてみました。分散KVSといえばFacebookのCassandraとか楽天のROMAなどもよく聞きますね。最近はNoSQLと言うほうが良いのかな。

参考にしたのはこの辺りのサイトです。
kumofsをインストールして遊んでみた。@BLOGKID
kumofsを使う@さくらインターネット創業日記

kumofsとは

kumofs(クモエフエス)は、実用性を重視した分散データストアです。レプリケーション機能を備え、一部のサーバーに障害が発生しても動作し続けます。単体でも高い性能を持ちながら、サーバーを追加することで読み・書き両方の性能が向上する特徴を持ち、低コストで極めて高速なストレージシステムを構築・運用できます。
分散Key-Valueストア「kumofs」を公開しました!@ 古橋貞之の日記

開発者の@frsyukiさんは筑波大学の現役の学部生だそうです。スゴすぎます。スーパーハカーです。

インストール手順

TokyoCabinetとMessagePackを先にインストールしておく必要があります。

TokyoCabinetのインストール

TokyoCabinetは言わずと知れたmikioさんによるDBM実装。この方も天才ハカーですね。TCは単体で使うというよりはDBMクライアント(TokyoTyrantとかFlareとか)からストレージとして使うイメージ。kumofsもバックエンドストレージにTCを使っているんすね。

TCは、いわゆるDBMの系譜のデータベースライブラリで、単純なハッシュテーブルをファイル上で永続化するだけの機能を提供します。
Inside Tokyo Cabinet その壱@mixi Engineer's blog

http://1978th.net/tokyocabinet/tokyocabinet-1.4.43.tar.gz
tar xvfz tokyocabinet-1.4.43.tar.gz
./configure
make
sudo make install

お決まりのconfigure-make-make installでOK

MessagePackのインストール

(MessagePackは)簡単に言い換えれば「速いJSON」です。JSONと比較するとシリアライズ後のデータサイズが小さく、CPUへの負荷が小さくて、ずっと高速です。
Introducing the MessagePack @ 古橋貞之の日記

MessagePackそのものも色々使えそうですごく興味深いプロダクトです!

http://sourceforge.jp/frs/redir.php?m=jaist&f=%2Fmsgpack%2F46155%2Fmsgpack-0.4.2.tar.gz
./configure
make
sudo make install
MessagePack for Rubyのインストール
sudo gem install msgpack
kumofs本体のインストール

いよいよ本体のインストールです。

wget http://github.com/etolabo/kumofs/tarball/kumofs-0.3.2
tar xvfz etolabo-kumofs-3d4dc92.tar.gz
cd etolabo-kumofs-3d4dc92
./bootstrap
./configure
make
sudo make install
  1. bootstrapしたときにgit -ほげほげしていたので、gitインストールしていないとうまく動かないかも。
  2. 参考サイトではconfigureオプションが必要とあるが、今は要らなくなっている模様

動作確認

kumofsサービスの起動

kumofsは以下の3つのサービスで動くので全部起動してあげます。

kumo-manager -l localhost -v 
 >>2010-04-08 04:48:49 ./manager/init.h:43: start manager 127.0.0.1:19700kumo-manager
kumo-server -m localhost -l localhost:19801 -L 19901 -s ./kumodb1.tch
 >>2010-04-08 04:57:53 server/framework.cc:74: new node 0 127.0.0.1:19700
kumo-gateway -m localhost -t 11211
 >>

kumoctlコマンドで確認してみる。

kumoctl localhost status
 >>hash space timestamp:
  Thu Apr 08 05:29:58 +0900 2010 clock 1234
attached node:
  127.0.0.1:19801  (active)
not attached node:
Telnetで接続してデータ保存と取得をしてみる
telnet localhost 11211
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying fe80::1...
telnet: connect to address fe80::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
set name 0 0 6
iskata
STORED
get name
VALUE name 0 6
iskata
END

やったね!!kumofs++
クラスタの設定方法・memcachedと比較したパフォーマンスのベンチマークなど、今度試してみる予定です。