2010年12月アーカイブ

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」を確認。


ウェブページ