apache-cassandraインストール
環境としては以下を使用。
OS:Debian Lenny on Xen 3.4.3
準仮想環境にてDom0に1G割り当て
DomUのメモリを1024MBに。
(DomUのメモリを512Mに制限したらCassandraがまともに起動しませんでした。)
ベースHW
Intel CoreDuo 2core 1CPU
メモリ6G
1. 環境設定
* JDKインストール
* antインストール
* JSVCインストール
cassandraをインストールするにあたってソースからビルドする為の2つのパッケージと起動用に一つのパッケージが必要となるためこれらをインストールします。
$sudo apt-get install sun-java6-jdk
$sudo apt-get install ant
$sudo apt-get install jsvc
※趣味的な問題で non-free の sun-javaを使用していますが通常のopenjdk-6-jdkで問題無いと思います。
2. cassandraのビルド
* ソース取得
* 展開
* ビルド
* jar作成
apache cassandraソースの取得
0.7を取得。近々0.7がリリースされるそうです。(でもまだRC2)
$wget http://www.ring.gr.jp/archives/net/apache/cassandra/0.7.0/apache-cassandra-0.7.0-rc2-src.tar.gz
ソースの展開
$tar xvfz ../src/apache-cassandra-0.7.0-rc2-src.tar.gz
ビルド
ソースのビルドを行います。
$cd apache-cassandra-0.7.0-rc2-src
$ant
jar 作成
jar ファイルを作成します。
$ant jar
3. インストール
* インストール
* 起動設定
* 起動確認
インストール
ビルドした各ファイルを各ディレクトリに配置。
make installなんてないので自力で配置。
debianの場合、配置の場所がdebian/cassandra.installに
あるのでこれを元に以下の様なシェルを書いてみました。
cassandra.install.sh
#!/bin/sh
mkdir -p /usr/share/cassandra
mkdir -p /etc/cassandra
cp -ipr conf/cassandra.yaml /etc/cassandra
cp -ipr conf/cassandra-env.sh /etc/cassandra
cp -ipr debian/cassandra.in.sh /usr/share/cassandra
cp -ipr bin/cassandra /usr/sbin
cp -ipr bin/cassandra-cli /usr/bin
cp -ipr bin/nodetool /usr/bin
cp -ipr bin/clustertool /usr/bin
cp -ipr bin/json2sstable /usr/bin
cp -ipr bin/sstable2json /usr/bin
cp -ipr bin/sstablekeys /usr/bin
cp -ipr bin/schematool /usr/bin
cp -ipr lib/*.jar /usr/share/cassandra
cp -ipr build/apache-cassandra-0.7.0-rc2-SNAPSHOT.jar /usr/share/cassandra/apache-cassandra-0.7.0-rc2.jar
cp -ipr lib/licenses /usr/share/doc/cassandra
cd /usr/share/cassandra
ln -s apache-cassandra-0.7.0-rc2.jar apache-cassandra.jar
chmod 755 /usr/sbin/cassandra
chmod 755 /usr/bin/cassandra-cli
chmod 755 /usr/bin/nodetool
chmod 755 /usr/bin/clustertool
chmod 755 /usr/bin/json2sstable
chmod 755 /usr/bin/sstable2json
chmod 755 /usr/bin/sstablekeys
chmod 755 /usr/bin/schematool
chmod 755 /etc/init.d/cassandra
起動設定
起動スクリプトの修正
debianの場合基本的にdebian/initの起動シェルがそのまま使えるので
これを流用しています。(0.6の頃手動修正していた箇所が殆ど治っていて素敵。)
一ヶ所だけ修正しています。(IPv4強制設定)
*** cassandra Wed Dec 22 10:34:26 2010
--- /home/works/build/apache-cassandra-0.7.0-rc2-src/debian/init Tue Dec 7 02:28:07 2010
***************
*** 123,129 ****
-errfile "&1" \
-outfile /var/log/$NAME/output.log \
-cp `classpath` \
- -Djava.net.preferIPv4Stack=true \
-Dlog4j.configuration=log4j-server.properties \
$JVM_OPTS \
org.apache.cassandra.thrift.CassandraDaemon
--- 123,128 ----
設定ファイルの変更
設定ファイルがyamlに変更になっています。
人として見やすくなったと思うかは分かれると頃かなと。
個人的にはyamlは結構好きです。
デフォルトからの変更箇所は以下のとおりです。
$vim /etc/cassandra/cassandra.yaml
クラスター名:ノード認識の要なのでわかりやすい用に。
別段デフォルトのままでも構いませんが。
cluster_name: 'Intheforest Cluster
オートブートストラップ:起動時にデータのリバランシングを行うか。
クラスターに突っ込むのでtrueに変更しています。
単体ではいりません。
auto_bootstrap: true
データファイルディレクトリ:データストア用のディレクトリです。
任意の場所に。
data_file_directories:
- /db/cassandra/data
コミットログディレクトリ:コミットログ用のディレクトリです。
commitlog_directory: /db/cassandra/commitlog
キャッシュ保存ディレクトリ:キャッシュ保存用です。
saved_caches_directory: /db/cassandra/saved_caches
検索ノード:最初にゴシップを投げる会話相手です。
クラスターに突っ込む為変更しています。
seeds:
- 192.168.1.12
Cassandra通信アドレス:Cassandraのノード間通信用のListenAdressです。
listen_address: 192.168.1.13
RPCの接続アドレス:Thrift通信用のListenAdressです。
rpc_address: 192.168.1.13
keyspaces以下:別ファイルに保存後、削除
※ 単体運用を行う限りデフォルトから変更が必須な物は無いので
そのままでよい方はそのままで。
$mkdir -p /db/cassandra/commitlog
$mkdir -p /db/cassandra/data
$mkdir -p /db/cassandra/aved_caches
init設定
OS再起動時に自動で立ち上がるように起動設定を行います。
# update-rc.d cassandra defaults
Adding system startup for /etc/init.d/cassandra ...
/etc/rc0.d/K20cassandra -> ../init.d/cassandra
/etc/rc1.d/K20cassandra -> ../init.d/cassandra
/etc/rc6.d/K20cassandra -> ../init.d/cassandra
/etc/rc2.d/S20cassandra -> ../init.d/cassandra
/etc/rc3.d/S20cassandra -> ../init.d/cassandra
/etc/rc4.d/S20cassandra -> ../init.d/cassandra
/etc/rc5.d/S20cassandra -> ../init.d/cassandra
起動スクリプトから起動
#/etc/init.d/cassandra start
起動確認
$cassandra-cli --host 192.168.1.6
Connected to: "Intheforest Cluster" on 192.168.1.6/9160
Welcome to cassandra CLI.
Type 'help;' or '?' for help. Type 'quit;' or 'exit;' to quit.
[default@unknown]
以上が表示されればOK 表示されない場合、接続できない場合は
「/var/log/cassandra」にある「output.log」「system.log」を確認。