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
とする。