Apache Cassandraを複数ノードで(その一)

| コメント(0) | トラックバック(0)
色々の話の流れでapache-cassandraを6台起動する流れに。
あまり情報も無いようなので手順を複数回に分けて書いていこうと思います。

まず最初にapache-cassandraをサーバーとしてインストールする手順を書いていきます。
実際の話サーバー利用するときに「ホームディレクトリで./cassandra -f を手動で」 なんてやっていられませんからね。


apache-cassandraインストール

環境としては以下を使用。

OS:Debian Lenny on Xen 3.3.1
メモリを512MBに制限。(ドキュメントでは1G以上推奨)
ベースHW
Intel CoreDuo 2core 1CPU
メモリ6G
準仮想環境
Dom0に1G割り当て
  1. 環境設定
    • JDKインストール
    • antインストール
  2. 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で問題無いと思います。


  3. cassandraのビルド
    • ソース取得
    • 展開
    • ビルド
    • jar作成
  4. apache cassandraソースの取得
    Apache CassandraはApache Software Foundationの配下にあるので自分の場合、Apache絡みはすべてRing Serverから取得しています。
    今回は諸事情によりbeta版ですが0.6を取得。
    $wget http://www.ring.gr.jp/archives/net/apache/cassandra/0.6.0/apache-cassandra-0.6.0-beta3-src.tar.gz
    最近RingServerがだんだん寂れていく感じで少々悲しいです。
    ソースの展開
    $tar xvfz ../src/apache-cassandra-0.6.0-beta3-src.tar.gz
    ビルド
    ソースのビルドを行います。
    $cd apache-cassandra-0.6.0-beta3-src
    $ant
    jar 作成
    jar ファイルを作成します。
    ここら辺のjavaのお作法に関しては結構疎いです。
    $ant jar
  5. インストール
    • インストール
    • 起動設定
    • 起動確認
  6. インストール
    ビルドした各ファイルを各ディレクトリに配置。
    make installなんてないので自力で配置。
    debianの場合、配置の場所がdebian/cassandra.installに
    あるのでこれを元に以下の様なシェルを書いてみました。
    cassandra.install.sh
    #!/bin/sh
    mkdir -p /usr/share/cassandra
    mkdir -p /etc/cassandra

    cp -p conf/log4j.properties /etc/cassandra/
    cp -p conf/storage-conf.xml /etc/cassandra/
    cp -p debian/cassandra.in.sh /usr/share/cassandra/
    cp -p debian/init /etc/init.d/cassandra
    cp -p bin/cassandra /usr/sbin/
    cp -p bin/cassandra-cli /usr/bin/
    cp -p bin/nodetool /usr/bin/
    cp -p bin/clustertool /usr/bin/
    cp -p lib/antlr-3.1.3.jar /usr/share/cassandra/
    cp -p lib/avro-1.2.0-dev.jar /usr/share/cassandra/
    cp -p lib/clhm-production.jar /usr/share/cassandra/
    cp -p lib/high-scale-lib.jar /usr/share/cassandra/
    cp -p lib/libthrift-r917130.jar /usr/share/cassandra/
    cp -p build/lib/jars/commons-cli-1.1.jar /usr/share/cassandra/
    cp -p build/lib/jars/commons-codec-1.2.jar /usr/share/cassandra/
    cp -p build/lib/jars/commons-collections-3.2.1.jar /usr/share/cassandra/
    cp -p build/lib/jars/commons-httpclient-3.1.jar /usr/share/cassandra/
    cp -p build/lib/jars/commons-lang-2.4.jar /usr/share/cassandra/
    cp -p build/lib/jars/commons-logging-1.1.1.jar /usr/share/cassandra/
    cp -p build/lib/jars/google-collections-1.0.jar /usr/share/cassandra/
    cp -p build/lib/jars/hadoop-core-0.20.1.jar /usr/share/cassandra/
    cp -p build/lib/jars/jackson-core-asl-1.4.0.jar /usr/share/cassandra/
    cp -p build/lib/jars/jackson-mapper-asl-1.4.0.jar /usr/share/cassandra/
    cp -p build/lib/jars/jline-0.9.94.jar /usr/share/cassandra/
    cp -p build/lib/jars/json-simple-1.1.jar /usr/share/cassandra/
    cp -p build/lib/jars/junit-4.6.jar /usr/share/cassandra/
    cp -p build/lib/jars/log4j-1.2.14.jar /usr/share/cassandra/
    cp -p build/lib/jars/slf4j-api-1.5.8.jar /usr/share/cassandra/
    cp -p build/lib/jars/slf4j-log4j12-1.5.8.jar /usr/share/cassandra/
    cp -p build/apache-cassandra-0.6.0-beta3.jar /usr/share/cassandra/
    cd /usr/share/cassandra
    ln -s apache-cassandra-0.6.0-beta3.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 /etc/init.d/cassandra
    ※ これを元にdebパッケージでも作った方が早いかもしれません。暇があったらそのうち作るかも。
    起動設定
    起動スクリプトの修正
    debianの場合基本的にdebian/initの起動シェルがそのまま使えるので
    これを流用しています。CentOSの人はこの辺は手対応になると思います。
    自分の場合、open-jdkではなくsun-javaを使っているのでJAVA_HOMEを書き換えます。
    --- cassandra   2010-04-01 03:16:13.000000000 +0000
    +++ /home/works/build/apache-cassandra-0.6.0-beta3-src/debian/init
    2010-03-17 18:34:07.000000000 +0000
    @@ -17,7 +17,7 @@
    PIDFILE=/var/run/$NAME.pid
    SCRIPTNAME=/etc/init.d/$NAME
    CONFDIR=/etc/cassandra
    -JAVA_HOME="/usr/lib/jvm/java-6-sun/jre"
    +JAVA_HOME="/usr/lib/jvm/java-6-openjdk/jre"
    JSVC=/usr/bin/jsvc
    JVM_MAX_MEM="1G"
    JVM_START_MEM="128M"
    設定ファイルの変更
    $vim /etc/cassandra/storage-conf.xml
    とりあえず最初は起動するだけなので コミットログディレクトリとデータディレクトリだけ書き換えます。
    <commitlogdirectory>/db/cassandra/commitlog</commitlogdirectory>
    <datafiledirectories>
    <datafiledirectory>/db/cassandra/data</datafiledirectory>
    </datafiledirectories>
    </pre>
    ※ デフォルトの/var/lib/cassandraでよい方はそのままで。
    データディレクトリの作成上記で指定したディレクトリを作成します。
    $mkdir -p /db/cassandra/commitlog
    $mkdir -p /db/cassandra/data
    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 localhost 
    pychodoga:/etc/cassandra# cassandra-cli --host localhost
    Connected to: "Test Cluster" on localhost/9160
    Welcome to cassandra CLI.
    Type 'help' or '?' for help. Type 'quit' or 'exit' to quit.
    cassandra>show keyspaces
    Keyspace
    system
    cassandra>
    以上が表示されればOK 表示されない場合、接続できない場合は 「/var/log/cassandra」にある「output.log」「system.log」を確認。

    自分はここまでほとんど問題なかったですねぇ。
    次回以降複数ノードでの立ち上げを書いていきます。
    ※ まだ構築途中...


P.S.ちなみにantでreleaseとか実行すると以下のようなものができます。(苦笑)
apache-cassandra-0.6.0-beta3-src.tar.gzを使った方が手っ取り早いかも。
$ant release
--中略--
[tar] Building tar: /home/works/build/apache-cassandra-0.6.0-beta3-src/build/apache-cassandra-0.6.0-beta3-bin.tar.gz
[tar] Building tar: /home/works/build/apache-cassandra-0.6.0-beta3-src/build/apache-cassandra-0.6.0-beta3-src.tar.gz
BUILD SUCCESSFUL
Total time: 13 seconds

トラックバック(0)

トラックバックURL: http://www.intheforest.jp/mtadmin/mt-tb.cgi/25

コメントする

ウェブページ