x**3な人生

基本的にはメモ

apaceh-cassandra-1.1.7を動かしたときのメモ(1)

apache-cassandra-1.1.7を動かしたときのメモ。環境はMac OSX 10.8.2とXubuntu 12.04。
ただしパッケージマネージャとかは使わずにバイナリを落としてきて、ユーザーディレクトリ以下にファイルをおくようにしているので、他の環境でも動くと思われる。
まずはシングルノードで動かす。

クライアントを動かす

Cassandra wikiを参考にして動かしてみる。

# cassandra-cli

hostやport、設定ファイルを指定する場合は以下のようになる。

cassandra-cli -host localhost -port 9160 -f script.txt

(1)keyspaceを作成する。その後にuseで使う。DBに相当。

[default@unknown] create keyspace Twissandra;
[default@unknown] use Twissandra;
[default@Twissandra]

(2)カラムファミリーを作成する。updateで定義の更新もできる。入力が長くなるときは改行。

[default@Twissandra] create column family User with comparator = UTF8Type;
[default@Twissandra] update column family User with
...        column_metadata =
...        [
...        {column_name: first, validation_class: UTF8Type},
...        {column_name: last, validation_class: UTF8Type},
...        {column_name: age, validation_class: UTF8Type, index_type: KEYS}
...        ];
[default@Twissandra] 

(3)デフォルトキータイプをutf8に指定する。指定しない場合は値を追加するたびにキー名に[utf8('keyname')]など指定しないといけない。

[default@Twissandra] assume User keys as utf8;

(4)データを追加する。上書きもできる。

[default@Twissandra] set User['jsmith']['first'] = 'John';
[default@Twissandra] set User['jsmith']['last'] = 'Smith';
[default@Twissandra] set User['jsmith']['age'] = '38';
[default@Twissandra] 
[default@Twissandra] set User['jsmith']['first'] = 'Jack';

(5)値の取得。whereで条件指定もできる。

[default@Twissandra] get User['jsmith'];
[default@Twissandra] get User where age = '12';

設定ファイルの編集

conf/README.txtの通り、以下の2つのファイルを変更。
/var/libと/var/logの権限を変更するのではなく、/Users/{アカウント名}/libと/Users/{アカウント名}/logにファイルを吐き出すようにする。新たにディレクトリを作成する必要は無いみたい。

(1)cassandra.yaml
以下の3カ所の"/var/lib"を"/Users/{アカウント名}/lib"に変更。

  • data_file_directories
  • commitlog_directory
  • saved_caches_directory

(2)log4j-server.properties
log4j.appender.R.Fileの"/var/log"を"/Users/{アカウント名}/log"に変更。


(3)PATHの追加
.bashrcの$PATHに{apache-cassandra-1.1.7の配置場所}/binを追加する。

サーバーの起動

# cassandra

とするとバックグラウンドでの起動になる。停止するにはkillを使う。
フォアグランドで起動するには、-fオプションをつけて、

# cassandra -f

とする。