CassandraをSnow Leopardで動かす
CassandraをSnow Leopardで動かす方法。
Javaの設定
~/.zshrcに次の記述を追加する。
export JAVA_HOME=$(/usr/libexec/java_home) export PATH=$JAVA_HOME/bin:$PATH
Cassandraのインストール
まずディレクトリを掘る。
1つはログ用ディレクトリ。
mkdir -p /var/log/cassandra touch /var/log/cassandra/system.log chown -R `whoami` /var/log/cassandra
2つ目はデータ用ディレクトリ。デフォルトらしい。
mkdir -p /var/lib/cassandra chown -R `whoami` /var/lib/cassandra
今回はコンパイル済みバイナリを落としてそれを使う。
tar xf apache-cassandra-0.5.1-bin.tar.gz mv apache-cassandra-0.5.1-bin /usr/local ln -s /usr/local/apache-cassandra-0.5.1-bin /usr/local/cassandra
サーバを立ち上げる。
/usr/local/cassandra/bin/cassandra
デフォルトではシングルモードで動作し、8888番ポートを使用する。
詳細な設定はconf/storage-conf.xmlに記述する。
クライアントはbin/cassandra-cliを使用する。
/usr/local/cassandra/bin/cassandra-cli -host localhost -port 8888/usr/local/cassandra/bin/cassandra-cli -host localhost -port 9160
対話形式で起動し、helpコマンドでヘルプを見ることができる。
プロセスの実行権限所有者とかログの書き込み権限とか
参考にしたサイトではどこもログやデータディレクトリの所有者が端末の利用者に設定されていてちょっと気持ち悪かった(whoami
の部分)。
なので、試しに_cassandraユーザを作って次のことをやってみた。
- 各ディレクトリの所有者を_cassandraユーザに設定
- サーバを_cassandraユーザで起動(sudo -u _cassandra /usr/local/cassandra/bin/cassandra)
- cassandra-cliを上と同様に起動(ユーザは
whoami
)
そしたら、サーバを起動したところまではうまくいったけど、クライアントを起動する際に/var/log/cassandra/system.logに書き込み権限が無いとエラーが出た。 そこに書き込むのはサーバのプロセス所有者である_cassandraなのに…。
そこで、今度はcassandra-cliもサーバと同じように_cassandraユーザで起動してみたら、ホームディレクトリに作られるクライアントの履歴ファイルの書き込み権限が無いと怒られた。これは確かにその通りだよね、という感じ。
なので、最終手段として_cassandraグループを作って次のことをやってみた。
- _cassandraグループに_cassandraユーザと
whoami
を追加する - ログディレクトリとデータディレクトリ、実行ファイルの所有グループを_cassandraグループに設定する
- ログディレクトリとデータディレクトリの所有グループに書き込み権限を与える
- サーバを_cassandraユーザで起動
- cassandra-cliは今まで通り普通に起動(ユーザは
whoami
)
そしたら、問題なくサーバに接続できた。 ログファイルはクライアントのユーザ権限で書き込みにいっているのかも?なんか変な気がするけど。
参考文献
- Installing Cassandra and Thrift on Snow Leopard – A Quick Start Guide - 0.4系でちょい古め。Cassandraをインストールするだけでなく、ThriftでPythonバインディングを使おうとしてる。ちなみにThriftをビルドするならautomakeのパッケージも必要
- Running Cassandra 0.5.0 on Mac OS X Leopard 10.5.8 - Snow Leopardで0.5系を使うちょっと新しめ。Cassandraをビルドしてる
- using cassandra’s thrift interface with ruby - ThriftでRubyバインディングを使う。Gemで公開されてる
- Cassandra Wiki - GettingStarted - サーバの立ち上げとかのざっくりとした解説
- Cassandra Wiki - CassandraCli - cassandra-cliの使い方
- dsclコマンドの使い方 - Snow Leopardでユーザやグループを管理するにはdsclコマンドを使う
- MacOSXにCassandra,Thriftをインストール - ThriftでPython、Perl、Rubyのインターフェイスを作成するところまでカバー
追記1: クライアントの接続先ポート
cassandraサーバを起動したときに8888と出てるからそっちに接続するのかと思ったら、どうやら違うらしい。 「列指向データベースCassandraにPythonで接続する」によると、conf/storage-conf.xmlに記述しているThriftPortに指定している値(デフォルトでは9160)に接続することになる。