Symfoware

Symfowareについての考察blog

分散データベース管理システムCassandraをDebianで動作させる

ひょんなことから、Cassandraという分散データベース管理システムを見つけました。

http://incubator.apache.org/cassandra/

どうやら、元々はFacebookで開発されたもので、今はオープンソースソフトウェア
として公開されているようです。

Debianにインストールして、起動や停止、データの登録を試して見ます。



前提条件



CassandraはJavaで動作しますので、Javaのインストールが必要です。
今回は、Javaはインストール済みとして話を進めます。

Javaのインストール


モジュールのダウンロードと設定



個人ルールで申し訳ないのですが、Apacheプロジェクトものは/usr/local/jakartaに
まとめることにしてます。
Cassandraも/usr/local/jakarta以下に配置することにします。

モジュールのダウンロードは、Cassandraのトップページにリンクが張られています。
http://incubator.apache.org/cassandra/
そこからダウンロードしました。

以下、ダウンロードから解凍までの手順です。


# cd /usr/local/jakarta/
# wget http://ftp.kddilabs.jp/infosystems/apache/incubator/cassandra/0.4.2/apache-cassandra-incubating-0.4.2-bin.tar.gz
# tar zxvf apache-cassandra-incubating-0.4.2-bin.tar.gz
# rm -f apache-cassandra-incubating-0.4.2-bin.tar.gz




/usr/local/jakarta/apache-cassandra-incubating-0.4.2に
モジュールを展開しました。

解凍したフォルダにREADME.txtがありますので、これを参考に設定を行います。

手順は、ログとデータのフォルダを作成し、権限を設定するだけです。


# mkdir -p /var/log/cassandra
# mkdir -p /var/lib/cassandra
# chown -R `whoami` /var/lib/cassandra



これで準備は完了です。



Cassandraの起動と停止



Cassandraを起動します。


# cd /usr/local/jakarta/apache-cassandra-incubating-0.4.2
# bin/cassandra -f
Listening for transport dt_socket at address: 8888
DEBUG - Loading settings from bin/../conf/storage-conf.xml
DEBUG - Syncing log with a period of 1000
DEBUG - opening keyspace Keyspace1
DEBUG - adding Super1 as 0
DEBUG - adding Standard2 as 1
DEBUG - adding Standard1 as 2
DEBUG - adding StandardByUUID1 as 3
DEBUG - adding LocationInfo as 4
DEBUG - adding HintsColumnFamily as 5
DEBUG - Starting CFS Standard2
DEBUG - Starting CFS Super1
DEBUG - Starting CFS Standard1
DEBUG - Starting CFS StandardByUUID1
DEBUG - opening keyspace system
DEBUG - Starting CFS LocationInfo
DEBUG - Starting CFS HintsColumnFamily
INFO - Saved Token not found. Using 142401082557430814403383380710536219870
DEBUG - Starting to listen on 127.0.0.1:7001
DEBUG - Binding thrift service to localhost:9160
INFO - Cassandra starting up...



-fオプションはフォアグラウンドで実行の意味ですので、この場合は
Ctrl + Cを押せば終了できます。

デーモンとして実行したい場合には、
-p [pidファイルのパス]
で実行します。


# bin/cassandra -p /var/run/cassandra.pid



これでデーモンとして実行してくれます。

デーモン実行を停止するには、


kill -KILL `cat /var/run/cassandra.pid`



これで停止してくれます。


※注意点
8080ポートを使用している場合、起動に失敗します。
詳しく調べていないのでなんともですが、おそらくクラスター通信用に
このポートを使用するようです。
さらっと調べた感じだと、変更する術はなさそうなので、Tomcat等で
8080を使用している場合は、おとなしくTomcat側のポートを変更したほうが
よさそうです。




データ登録のサンプル



コマンドラインで実行できるスクリプトが付属していますので、
これを使用してデータの登録と検索を実行してみます。

クライアントツールの起動手順です。


# cd /usr/local/jakarta/apache-cassandra-incubating-0.4.2
# bin/cassandra-cli --host localhost --port 9160
Connected to localhost/9160
Welcome to cassandra CLI.

Type 'help' or '?' for help. Type 'quit' or 'exit' to quit.
cassandra>



readme通りで申し訳ないですが・・・


cassandra> set Keyspace1.Standard1['jsmith']['first'] = 'John'
Value inserted.
cassandra> set Keyspace1.Standard1['jsmith']['last'] = 'Smith'
Value inserted.
cassandra> set Keyspace1.Standard1['jsmith']['age'] = '42'
Value inserted.
cassandra> get Keyspace1.Standard1['jsmith']
  (column=last, value=Smith; timestamp=1258206613381)
  (column=first, value=John; timestamp=1258206609055)
  (column=age, value=42; timestamp=1258206616769)
Returned 3 rows.
cassandra>



ここで登場するKeyspace1やStandard1は、
conf/storage-conf.xml
ここで定義されています。

storage-conf.xmlでの定義はKeyspace1.Standard1までで、その後は
[任意のkey名][任意の列名]というイメージでしょうか?

そのため

cassandra> set Keyspace1.Standard1['jsmith']['tel'] = '999-999-9999'
Value inserted.
cassandra> get Keyspace1.Standard1['jsmith']
  (column=tel, value=999-999-9999; timestamp=1258206845414)
  (column=last, value=Smith; timestamp=1258206613381)
  (column=first, value=John; timestamp=1258206609055)
  (column=age, value=42; timestamp=1258206616769)
Returned 4 rows.



このように、勝手に列を追加できます。
keyも同様に

cassandra> set Keyspace1.Standard1['test']['first'] = '日本語'
Value inserted.
cassandra> set Keyspace1.Standard1['test']['last'] = 'テスト'
Value inserted.
cassandra> set Keyspace1.Standard1['test']['age'] = '10'
Value inserted.
cassandra> set Keyspace1.Standard1['test']['tel'] = '000-000-0000'
Value inserted.
cassandra> get Keyspace1.Standard1['test']
  (column=tel, value=000-000-0000; timestamp=1258206993417)
  (column=last, value=テスト; timestamp=1258206986903)
  (column=first, value=日本語; timestamp=1258206983426)
  (column=age, value=10; timestamp=1258206990225)
Returned 4 rows.



こんな感じの挙動になります。
ちょっと不思議な感じです。


なかなか面白そうなので、継続して触ってみようと思います。





関連記事

テーマ:データベース - ジャンル:コンピュータ

  1. 2010/01/19(火) 12:15:59|
  2. Cassandra
  3. | トラックバック:0
  4. | コメント:3
  5. | 編集
<<Debian wget、apt-get、easy_install、svn、mercurialのproxy設定方法 | ホーム | Debian Jetty7の環境でeXistを起動する>>

コメント

Cassandraのポート

Cassandraの情報少ないので参考にさせてもらってます!

今更感ありますが、8080のポート
./bin/cassandra.in.shのなかの
-Dcom.sun.management.jmxremote.port=8080
を変えると変更出来るようでした。
  1. 2010/03/08(月) 22:19:10 |
  2. URL |
  3. mistat #9kh5x0iI
  4. [ 編集 ]

Re: Cassandraのポート

なるほど。
設定ファイルではなく、起動用のスクリプトに書いてあったんですね。

情報、ありがとうございます!
  1. 2010/03/09(火) 17:22:54 |
  2. URL |
  3. symfo #-
  4. [ 編集 ]

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます
  1. 2010/04/21(水) 22:54:30 |
  2. |
  3. #
  4. [ 編集 ]

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/286-f62f28c0
この記事にトラックバックする(FC2ブログユーザー)