Cassandraは,key-value方式のNoSQL分散データベースである。元々Facebookで使われていたデータベースをオープンソース化したものだそうで,現在ではApacheのプロジェクト(インキュベータプロジェクト)の一つになっている。現在私の本業で関っている製品もCassandraをサポートしており,テスト環境構築のために,自分でインストールする機会が何度かあった。
先月(2011年3月),Apacheは初めての「安定バージョン」と銘打って,cassandra 0.7.4をリリースした。
今回は,この最新版のインストールの手順を記録しておこうと思う。テスト環境であり,プロダクトデータベースを展開するつもりはない。したがって,クラスタを構築することはせず,単一VMにインストールするにとどめる。
基本的には,Linuxであればインストールは可能である。(Windowsでも可能であるようだ)今回は,Fedora 14 64bitを使用する。
なお,Cassandraには,Datastax(元Riptano)からRPMが提供されており,Fedoraであれば,これを登録することで,yumによるインストールが可能になる。ただし,こちらの方はライセンスの関係で,Sun(Oracle) JDKの代りに,OpenJDKがセットになっている。Datastaxのサイトでも,これを後でSun JDKに切り替えることを推奨している。これは必須ではないのだが,一応これも薦められるままにやっておこうと思う。
このRPM版(Packaged Releaseと呼ばれている)については,以下にインストール手順がある。
http://www.datastax.com/docs/0.7/configuration/packaged_releases
まず,RPMをダウンロードする。URLのpathに0.6を示すと思われる6が入っているが,これは気にしないでいい。このRPMサイトにはもっと新しいRPMファイルもあるが,失敗する可能性がある。ここは,このWebサイトに従って作業するべきだろう。
# wget http://rpm.datastax.com/EL/6/x86_64/riptano-release-5-1.el6.noarch.rpm
–2011-04-19 04:29:31– http://rpm.datastax.com/EL/6/x86_64/riptano-release-5-1.el6.noarch.rpm
Connecting to 10.20.18.106:80… connected.
Proxy request sent, awaiting response… 200 OK
Length: 3051 (3.0K) [application/x-redhat-package-manager]
Saving to: a€ナ途iptano-release-5-1.el6.noarch.rpm.1a€
100%[======…====>] 3,051 13.3K/s in 0.2s
2011-04-19 04:29:32 (13.3 KB/s) – a€ナ途iptano-release-5-1.el6.noarch.rpm.1a€
続いて,このRPMをインストールする。
# rpm -i riptano-release-5-1.el6.noarch.rpm
さらにyumでcassandraをインストールする。パッケージ名はapache-cassandraであることに注意。単にcassandraとやると,0.6.12がインストールされてしまう。
# yum install apache-cassandra
Loaded plugins: langpacks, presto, refresh-packagekit
Adding en_US to language list
Setting up Install Process
Resolving Dependencies
–> Running transaction check
—> Package apache-cassandra.noarch 0:0.7.4-1 set to be installed
–> Finished Dependency Resolution
Dependencies Resolved
=================================
Package Arch Version Repository Size
=================================
Installing:
apache-cassandra noarch 0.7.4-1 riptano 8.2 M
Transaction Summary
=================================
Install 1 Package(s)
Total download size: 8.2 M
Installed size: 9.0 M
Is this ok [y/N]: y
Downloading Packages:
Setting up and reading Presto delta metadata
Processing delta metadata
Package(s) data still to download: 8.2 M
apache-cassandra-0.7.4-1.el5.noarch.rpm | 8.2 MB 00:19
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : apache-cassandra-0.7.4-1.noarch 1/1
Installed:
apache-cassandra.noarch 0:0.7.4-1
Complete!
#
なお,この時点で,cassandra専用アカウントとして,cassandraというOSユーザーと同名のグループが自動的に作成される。また,RPM(yum)でインストールすると,cassandraという名前のサービスが作成されるので,基本的には,これをserviceコマンドで起動すれば,cassandraは動き出す。このとき,cassandraのプロセスは,作成されたcassandraという所有者の下で走行する。
ということで,もう起動準備はできたわけだが,もう一つやることがある。Datastaxの薦めに従い,Sun JDKをインストールし,Cassandraからの参照をこちらに切り替える作業だ。
まず,Oracleのサイトにいき,Sun JDKの最新版をダウンロードする。
http://www.oracle.com の先頭ページから
Downloads > Developer Tools をたどり,Javaのカテゴリにある Java SEをクリック。
続いて,ページ中段にあるDownload JDKのボタンをクリック。
プラットフォームとして Linux 64bitを選び,ライセンスアグリーメントにチェックを入れ,ダウンロードのボタンを押す。
二つ候補が出るが,~.rpm.bin を選ぶ。執筆時点の最新版は,6u25なので,ファイル名は
jdk-6u24-linux-x64-rpm.bin
となる。ダウンロード後,これに実行権を付けて実行すれば,解凍され,RPMも自動的に走って(確認のため,Enterを一度押すが),インストールは終了する。
# chmod +x *rpm.bin
# ./jdk-6u24-linux-x64-rpm.bin
Unpacking…
Checksumming…
Extracting…
UnZipSFX 5.50 of 17 February 2002, by Info-ZIP (Zip-Bugs@lists.wku.edu).
inflating: jdk-6u24-linux-amd64.rpm
inflating: sun-javadb-common-10.6.2-1.1.i386.rpm
inflating: sun-javadb-core-10.6.2-1.1.i386.rpm
inflating: sun-javadb-client-10.6.2-1.1.i386.rpm
inflating: sun-javadb-demo-10.6.2-1.1.i386.rpm
inflating: sun-javadb-docs-10.6.2-1.1.i386.rpm
inflating: sun-javadb-javadoc-10.6.2-1.1.i386.rpm
Preparing… #####…# [100%]
1:jdk #####…# [100%]
Unpacking JAR files…
rt.jar…
jsse.jar…
charsets.jar…
tools.jar…
localedata.jar…
plugin.jar…
javaws.jar…
deploy.jar…
Installing JavaDB
Preparing… #####…# [100%]
1:sun-javadb-common #####…# [ 17%]
2:sun-javadb-core #####…# [ 33%]
3:sun-javadb-client #####…# [ 50%]
4:sun-javadb-demo #####…# [ 67%]
5:sun-javadb-docs #####…# [ 83%]
6:sun-javadb-javadoc #####…# [100%]
Java(TM) SE Development Kit 6 successfully installed.
Product Registration is FREE and includes many benefits:
* Notification of new versions, patches, and updates
* Special offers on Oracle products, services and training
* Access to early releases and documentation
Product and system data will be collected. If your configuration
supports a browser, the JDK Product Registration form will
be presented. If you do not register, none of this information
will be saved. You may also register your JDK later by
opening the register.html file (located in the JDK installation
directory) in a browser.
For more information on what data Registration collects and
how it is managed and used, see:
http://java.sun.com/javase/registration/JDKRegistrationPrivacy.html
Press Enter to continue…..
[ここでEnterを押す]
Done.
#
JDKのインストール場所を確認する。
# rpm -ql jdk | head -10
/etc
/etc/.java
/etc/.java/.systemPrefs
/etc/.java/.systemPrefs/.system.lock
/etc/.java/.systemPrefs/.systemRootModFile
/etc/init.d/jexec
/usr
/usr/java
/usr/java/jdk1.6.0_24
/usr/java/jdk1.6.0_24/COPYRIGHT
#
インストールされた場所は
/usr/java/jdk1.6.0_24
と判明。これをJAVA_HOMEとして,Cassandraに設定しなくてはならない。
RPMでインストールされた場合,cassandraのサービススクリプトのstart部に,JAVA_HOMEの設定ステップが含まれている。少し汚いやり方だが,ここを変更しておくのがいいだろう。
viなどで,cassandraのサービススクリプト,/etc/init.d/cassandra を編集する。
まず,以下の行を探し,
export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/
この行を以下のように変更して,保存する。
export JAVA_HOME=/usr/java/jdk1.6.0_24/
これでインストール作業はすべて終わりだ。
Cassandraをserviceコマンドで起動する。
# service cassandra start
Starting Cassandra: OK
#
続いて,簡単なテストをやっておく。
ここからは,一般ユーザーに戻って構わない。cassandra以外のユーザーでも構わない。
$ cassandra-cli
Welcome to cassandra CLI.
Type ‘help;’ or ‘?’ for help. Type ‘quit;’ or ‘exit;’ to quit.
[default@unknown]
これでCassandraのCLI(コマンドラインインタフェース)に入った。
CLIは,0.7のベータのあるバージョンから,あるいはRC(Release Candidate)あたりから,すべてのコマンドをセミコロン(;)で終わらせるシンタックスに変更になっている。0.6のときから使っている人は,これを知らずに使い始めると,helpすら応答がないので,インストールに失敗したのかと思ってしまったりする。helpではなくhelp;とタイプしないとならない。ただし,help;の代りに,?とタイプしてもコマンド一覧がでるが,この場合は,セミコロンは要らない。単に?とタイプすればいい。
次に,今立ち上げたCassandraに接続し,キースペースの一覧を出してみる。
[default@unknown] connect localhost/9160;
Connected to: “Test Cluster” on localhost/9160
[default@unknown] show keyspaces;
Keyspace: system:
Replication Strategy: org.apache.cassandra.locator.LocalStrategy
Replication Factor: 1
Column Families:
ColumnFamily: HintsColumnFamily (Super)
“hinted handoff data”
Columns sorted by:
org.apache.cassandra.db.marshal.BytesType/org.apache.cassandra.db.marshal.BytesType
Row cache size / save period: 0.0/0
Key cache size / save period: 0.01/14400
Memtable thresholds: 0.15/32/1440
GC grace seconds: 0
Compaction min/max thresholds: 4/32
Read repair chance: 0.0
Built indexes: []
ColumnFamily: IndexInfo
“indexes that have been completed”
Columns sorted by: org.apache.cassandra.db.marshal.UTF8Type
Row cache size / save period: 0.0/0
:
:
これで,一応インストールと起動に成功していることが確かめられた。