Cassandra 2.0.3 + Java 1.7 セットアップ

研究室のゼミ及び学生の研究で,Apache Cassandraを使用しており,自分もその環境を準備したく,今回は,Amazon EC2のインスタンスにそれをセットアップしようと試みます.

Amazon EC2にて使用しているインスタンスは,最低スペック micro タイプの Amazon Linux AMI です.

Cassandraを動かすには,Javaが必須ですので,とりあえず,現在インストールされているJavaの環境を確認してみます.

# java -version
java version "1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.14) (amazon-65.1.11.14.57.a
mzn1-x86_64)
OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)

今回は,CassandraもJavaも最新バージョンで試したみたいと思いますので,現在 Version 1.6 のJavaを1.7に上げようと思います.
では,今のOpenJDKを削除しようとしてみます.

# rpm -e java-1.6.0-openjdk
エラー: 依存性の欠如:
jre >= 1.6.0 は (インストール済み)aws-apitools-iam-1.5.0-1.2.amzn1.noarch
に必要とされています
jre >= 1.6.0 は (インストール済み)aws-apitools-as-1.0.61.3-1.0.amzn1.noarc
h に必要とされています
jre >= 1.6.0 は (インストール済み)aws-apitools-mon-1.0.13.4-1.0.amzn1.noar
ch に必要とされています
 :

削除できましぇーん.あらら,AWSのAPIツール関係で必要としているみたい.


javaの場所,JAVA_HOMEの値,javacの存在を確認してみます.

# which java
 /usr/bin/java

# echo $JAVA_HOME
 /usr/lib/jvm/jre

# javac -version
bash: javac: コマンドが見つかりません

javacは無いのね./usr/bin/java のリンク先を見てみると.

# ls -l /usr/bin/java*
 lrwxrwxrwx 1 root root 22 12月 16 01:09 2013 /usr/bin/java -> /etc/alternatives/
java
 lrwxrwxrwx 1 root root 47 11月 12 06:02 2013 /usr/bin/java6 -> //usr/lib/jvm/jre-
1.6.0-openjdk.x86_64/bin/java

これは,alternativesで切り分けていますな.ということで確認.

# update-alternatives --config java
 ----------------------------------------------------
 1 プログラムがあり 'java' を提供します。

選択 コマンド
 -----------------------------------------------
 *+ 1 /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java

では,このままこのバージョンは残しておいて,新しいのをダウンロードしてインストールしましょう.

Oracle Javaのサイトから最新パッケージを,とりあえず手元のPCにダウンロードしてから,Amazon EC2のホストへscpしておきます.

バイナリパッケージをインストール.

# rpm -ivh jdk-7u45-linux-x64.rpm
# javac -version
 javac 1.7.0_45

おっ,javac入りました.

# java -version
 java version "1.6.0_24"
 OpenJDK Runtime Environment (IcedTea6 1.11.14) (amazon-65.1.11.14.57.a
mzn1-x86_64)
 OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)

ランタイムは1.6のままですね.

JRE(Javaの実行環境)もダウンロードしてインストール.

# rpm -ivh jre-7u45-linux-x64.rpm

alternativesへの情報登録

# update-alternatives --install /usr/bin/java java /usr/java/default/bin/java 10

alternativesの確認と設定

# update-alternatives --config java

2 プログラムがあり 'java' を提供します。

選択 コマンド
-----------------------------------------------
 *+ 1 /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java
 2 /usr/java/default/bin/java

Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:2

2を選択.

一応,環境変数「JAVA_HOME」も設定しておいて...

[~/.bash_profile]

 :
 export JAVA_HOME=/usr/java/default
 :

有効にします.

$ source ~/.bash_profile
$ echo $JAVA_HOME
/usr/java/default

良しっと.

さて,やっとCassandraに取りかかれる.
とりあえず,/opt/cassandra 配下にインストールすることに決めました.

サイトからtarballをダウンロードしてきて.../opt で展開

# cd /opt
# tar xvzf apache-cassandra-2.0.3-bin.tar.gz

展開後,シンボリックリンクを張っておきます.

# ln -s apache-cassandra-2.0.3 cassandra

すぐにでも実行したいところをグッとこらえて,必要なディレクトリを作成しておきます.

# mkdir /var/log/cassandra
# mkdir /var/lib/cassandra

特に,今変更する予定はありませんが,設定ファイル cassandra.yaml の確認とオリジナルをコピーしておきます.

# cd /opt/cassandra/conf/
# cp -p cassandra.yaml cassandra.yaml.ORG

まずは,失敗しないかフォアグラウンドで起動

# /opt/cassandra/bin/cassandra -f
xss = -ea -javaagent:/opt/cassandra/bin/../lib/jamm-0.2.5.jar -XX:+UseThreadP
riorities -XX:ThreadPriorityPolicy=42 -Xms297M -Xmx297M -Xmn74M -XX:+H
eapDumpOnOutOfMemoryError -Xss256k
INFO 01:54:12,092 Logging initialized
INFO 01:54:12,122 JVM vendor/version: Java HotSpot(TM) 64-Bit Server VM/
1.7.0_45
 :
INFO 01:54:17,901 Using synchronous/threadpool thrift server on localhost : 9
160
INFO 01:54:17,902 Listening for thrift clients...

上記のようにメッセージで止まればOK

その後,[Ctrl] + [c]

今度はバックグラウンドで起動

# /opt/cassandra/bin/cassandra

cqlsh の確認.

# /opt/cassandra/bin/cqlsh
 Connected to Test Cluster at localhost:9160.
 [cqlsh 4.1.0 | Cassandra 2.0.3 | CQL spec 3.1.1 | Thrift protocol 19.38.0]
 Use HELP for help.
 cqlsh> exit

特に問題なし.

続いて,cassandra-cli (クライアントツール)の確認

# /opt/cassandra/bin/cassandra-cli
Connected to: "Test Cluster" on 127.0.0.1/9160
Welcome to Cassandra CLI version 2.0.3

The CLI is deprecated and will be removed in Cassandra 3.0. Consider migrat
ing to cqlsh.
CQL is fully backwards compatible with Thrift data; see http://www.datastax.co
m/dev/blog/thrift-to-cql3

Type 'help;' or '?' for help.
Type 'quit;' or 'exit;' to quit.

現在のキースペース一覧を表示してみます.

[default@unknown] show keyspaces;

あれれ,かなり時間がかかりますぞ...

おまけに,こんな警告が...

WARNING: Could not connect to the JMX on 127.0.0.1:7199 - some information
won't be shown.

と,困っていると,次のサイトにヒントが.

Java and System Environment Settings Configuration | DataStax Cassandra 0.8 Documentation

JMX関係で,接続に問題があった場合は,cassandra-env.sh の次の箇所をアンコメントしなさいと書いてありましたので,アンコメントして,hostnameに127.0.0.1を指定しておきます.

[/opt/cassandra/conf/cassandra-env.sh]

# JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=<public name>"
 ↓
JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=127.0.0.1"

これで,Cassandraを再起動させたら問題が解消されましたー.

さて,再度クライアントツールを起動させて,適当なデータを作成してみます.

# /opt/cassandra/bin/cassandra-cli

まずは,キースペース(ここでは「demo」とする)を作成し,そのキースペースを利用します.

[default@unknown] create keyspace demo;

[default@unknown] use demo;
Authenticated to keyspace: demo

次にコラムファミリー(ここでは「students」とする)を作成.

[default@demo] create column family students with comparator=UTF8Type 
AND key_validation_class=UTF8Type AND default_validation_class=UTF8Type;

以下のようなデータを格納してみます.

students['123450'] = {
    "full_name" => "Taro Kagoshima",
    "e_mail" => "taro@kago.jp"
 }
 students['123451'] = {
    "full_name" => "Hanako Satsuma,
    "e_mail" => "hana@satsuma.jp"
 }
[default@demo] set students['123450']['full_name'] = 'Taro Kagoshima';
[default@demo] set students['123450']['e_mail'] = 'taro@kago.jp';
[default@demo] set students['123451']['full_name'] = 'Hanako Satsuma';
[default@demo] set students['123451']['e_mail'] = 'hana@satsuma.org';

キーが”123450″のローデータを取得してみます.

[default@demo] get students['123450'];
 => (name=e_mail, value=taro@kago.jp, timestamp=1387164677544000)
 => (name=full_name, value=Taro Kagoshima, timestamp=1387164658381000)

とりあえず,実行を確認できたので終了です.

[default@demo] exit;
広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中