CassandraをUbuntuにインストールしてみた。

カサンドラというと北斗の拳を連想してしまいますが、最近KVSの中でもCassandraの名前をよく聞くようになったので、とりあえずUbuntu10.4にインストールしてみました。(debパッケージ)

手順
  • /etc/apt/sources.listの編集
    • nanoやviで下記を一番下に追加します。
deb http://www.apache.org/dist/cassandra/debian unstable main
deb-src http://www.apache.org/dist/cassandra/debian unstable main
  • 最新パッケージリストを取得
% sudo apt-get update
ヒット http://jp.archive.ubuntu.com lucid Release.gpg                          
ヒット http://jp.archive.ubuntu.com/ubuntu/ lucid/main Translation-ja          
無視 http://jp.archive.ubuntu.com/ubuntu/ lucid/restricted Translation-ja      
無視 http://www.apache.org/dist/cassandra/debian/ unstable/main Translation-ja 
:
:
:
8,065B を 3s で取得しました (2,416B/s)
パッケージリストを読み込んでいます... 完了
W: GPG error: http://www.apache.org unstable Release: 公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY F758CE318D77295D
  • 公開鍵の設定(上で表示されたキー値を使用。ここではF758CE318D77295D)
% gpg --keyserver wwwkeys.eu.pgp.net --recv-keys F758CE318D77295D
gpg: 鍵8D77295Dをhkpからサーバーwwwkeys.eu.pgp.netに要求
gpg: 鍵8D77295D: 公開鍵“Eric Evans ”を読み込みました
gpg: 絶対的に信用する鍵が見つかりません
gpg: 処理数の合計: 1
gpg:               読込み: 1  (RSA: 1)
% sudo apt-key add ~/.gnupg/pubring.gpg
OK
  • もう一回更新してみる
% sudo apt-get update
ヒット http://jp.archive.ubuntu.com lucid Release.gpg                          
ヒット http://jp.archive.ubuntu.com/ubuntu/ lucid/main Translation-ja          
:
:
4,643B を 2s で取得しました (1,731B/s)
パッケージリストを読み込んでいます... 完了
laptop% sudo apt-get install cassandra
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下の特別パッケージがインストールされます:
  ca-certificates-java icedtea-6-jre-cacao java-common jsvc
  libcommons-daemon-java openjdk-6-jre-headless openjdk-6-jre-lib tzdata-java
提案パッケージ:
  default-jre equivs java-virtual-machine sun-java6-fonts ttf-wqy-zenhei
  ttf-telugu-fonts ttf-oriya-fonts ttf-kannada-fonts ttf-bengali-fonts
以下のパッケージが新たにインストールされます:
  ca-certificates-java cassandra icedtea-6-jre-cacao java-common jsvc
  libcommons-daemon-java openjdk-6-jre-headless openjdk-6-jre-lib tzdata-java
アップグレード: 0 個、新規インストール: 9 個、削除: 0 個、保留: 0 個。
41.3MB のアーカイブを取得する必要があります。
この操作後に追加で 100MB のディスク容量が消費されます。
続行しますか [Y/n]? y
取得:1 http://www.apache.org/dist/cassandra/debian/ unstable/main cassandra 0.6.2 [8,528kB]
取得:2 http://jp.archive.ubuntu.com/ubuntu/ lucid/main openjdk-6-jre-lib 6b18-1.8-0ubuntu1 [5,907kB]
:
:
tzdata-java (2010j-0ubuntu0.10.04) を設定しています ...
java-common (0.34) を設定しています ...
openjdk-6-jre-lib (6b18-1.8-0ubuntu1) を設定しています ...
ca-certificates-java (20100406ubuntu1) を設定しています ...
creating /etc/ssl/certs/java/cacerts...
done.
:
:
libcommons-daemon-java (1.0.2~svn20061127-10ubuntu1) を設定しています ...
jsvc (1.0.2~svn20061127-10ubuntu1) を設定しています ...
cassandra (0.6.2) を設定しています ...

icedtea-6-jre-cacao (6b18-1.8-0ubuntu1) を設定しています ...
  • cassandaが8080 Portを使用しているので必要に応じて変更する。
    • /usr/share/cassandra/cassandra.in.sh
      • ここでは10036に設定。
% sudo vi /usr/share/cassandra/cassandra.in.sh
 -Dcom.sun.management.jmxremote.port=10036 \
  • 起動
% sudo /etc/init.d/cassandra start
  • 接続
    • ここで指定しているportやカラムファミリーの設定は、/etc/cassandra/storage-conf.xmlに書かれています。(ログの設定は同ディレクトリのlog4j.propertiesに書かれています。)
% cassandra-cli --host localhost --port 9160
  • テスト(サンプルキースペースを使用)
    • サンプルキースペースを表示
cassandra> describe keyspace Keyspace1
Keyspace1.Super1
Column Family Type: Super
Columns Sorted By: org.apache.cassandra.db.marshal.BytesType@1d47b2b

Column Family Type: Super
Column Sorted By: org.apache.cassandra.db.marshal.BytesType
flush period: null minutes
          • -
Keyspace1.Standard2 Column Family Type: Standard Columns Sorted By: org.apache.cassandra.db.marshal.UTF8Type@e265d0 : : Column Family Type: Standard Column Sorted By: org.apache.cassandra.db.marshal.TimeUUIDType flush period: null minutes
cassandra> set Keyspace1.Standard1['user']['name']='kobayashi'
Value inserted.
cassandra> set Keyspace1.Standard1['user']['hatena']='koba04'
Value inserted.
cassandra> set Keyspace1.Standard1['user']['twitter']='koba04'
Value inserted.
cassandra> set Keyspace1.Standard1['user']['lastfm']='koba04'
Value inserted.
    • データの取得
cassandra> get Keyspace1.Standard1['user']
=> (column=74776974746572, value=koba04, timestamp=1278162714479000)
=> (column=6e616d65, value=kobayashi, timestamp=1278162670245000)
=> (column=6c617374666d, value=koba04, timestamp=1278162722059000)
=> (column=686174656e61, value=koba04, timestamp=1278162704447000)
Returned 4 results.
cassandra> get Keyspace1.Standard1['user']['twitter']
=> (column=74776974746572, value=koba04, timestamp=1278162714479000)

とりあえずインストールは出来たのは、これから色々触ってみようと思います。