- Ubuntu 10.04
- http://wiki.apache.org/cassandra/GettingStarted
インストール
$ mkdir -p ~/apache/cassandra $ cd ~/apache/cassandra/ $ wget http://www.meisei-u.ac.jp/mirror/apache/dist//cassandra/0.7.0/apache-cassandra-0.7.0-bin.tar.gz $ tar xvzf apache-cassandra-0.7.0-bin.tar.gz $ mv apache-cassandra-0.7.0/ 0.7.0
設定
CASSANDRA_HOME
$ vi /home/ktakeda47/.bashrc
export CASSANDRA_HOME=/home/ktakeda47/apache/cassandra/0.7.0 export CASSANDRA_CONF=$CASSANDRA_HOME/conf export CASSANDRA_MAIN=org.apache.cassandra.thrift.CassandraDaemon
$ source ~/.bashrc
Java1.6が必要
$ java -version java version "1.6.0_20"
各種ディレクトリの場所指定
$ cd 0.7.0/ $ vi conf/cassandra.yaml
# directories where Cassandra should store data on disk. #data_file_directories: # - /var/lib/cassandra/data data_file_directories: - /home/ktakeda47/apache/cassandra/0.7.0/data
# commit log #commitlog_directory: /var/lib/cassandra/commitlog commitlog_directory: /home/ktakeda47/apache/cassandra/0.7.0/commitlog
# saved caches #saved_caches_directory: /var/lib/cassandra/saved_caches saved_caches_directory: /home/ktakeda47/apache/cassandra/0.7.0/saved_caches
$ mkdir data $ mkdir commitlog $ mkdir saved_caches
log4jログファイルの出力先指定
$ vi conf/log4j-server.properties
#log4j.appender.R.File=/var/log/cassandra/system.log log4j.appender.R.File=/home/ktakeda47/apache/cassandra/0.7.0/log/system.log
$ mkdir log
JMXのポート変更
$ vi conf/cassandra-env.sh
# Specifies the default port over which Cassandra will be available for # JMX connections. #JMX_PORT="8080" JMX_PORT="9090"
起動
$ ./bin/cassandra -f
cliでアクセス
$ ./bin/cassandra-cli
Welcome to cassandra CLI. Type 'help;' or '?' for help. Type 'quit;' or 'exit;' to quit. [default@unknown] [default@unknown] connect localhost/9160; Connected to: "Test Cluster" on localhost/9160
キースペース作成
[default@unknown] create keyspace Sample1; [default@unknown] use Sample1; Authenticated to keyspace: Sample1
カラムファミリー作成
[default@Sample1] create column family Standard1; [default@Sample1] create column family Super1 with COLUMN_TYPE=Super and COMPARATOR=BytesType and SUBCOMPARATOR=BytesType; [default@Sample1] create column family utf8Order with COMPARATOR=UTF8Type; [default@Sample1] create column family time_utf8Order with COLUMN_TYPE=Super and COMPARATOR=LongType and SUBCOMPARATOR=UTF8Type;
データモデル確認
[default@Sample1] show keyspaces; WARNING: Could not connect to the JMX on localhost:8080, information won't be shown. Keyspace: Sample1: Replication Strategy: org.apache.cassandra.locator.SimpleStrategy Replication Factor: 1 Column Families: ColumnFamily: Standard1 Columns sorted by: org.apache.cassandra.db.marshal.BytesType Row cache size / save period: 0.0/0 Key cache size / save period: 200000.0/3600 Memtable thresholds: 0.4359375/93/60 GC grace seconds: 864000 Compaction min/max thresholds: 4/32 Read repair chance: 1.0 ColumnFamily: Super1 (Super) 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: 200000.0/3600 Memtable thresholds: 0.4359375/93/60 GC grace seconds: 864000 Compaction min/max thresholds: 4/32 Read repair chance: 1.0 ColumnFamily: time_utf8Order (Super) Columns sorted by: org.apache.cassandra.db.marshal.LongType/org.apache.cassandra.db.marshal.UTF8Type Row cache size / save period: 0.0/0 Key cache size / save period: 200000.0/3600 Memtable thresholds: 0.4359375/93/60 GC grace seconds: 864000 Compaction min/max thresholds: 4/32 Read repair chance: 1.0 ColumnFamily: utf8Order Columns sorted by: org.apache.cassandra.db.marshal.UTF8Type Row cache size / save period: 0.0/0 Key cache size / save period: 200000.0/3600 Memtable thresholds: 0.4359375/93/60 GC grace seconds: 864000 Compaction min/max thresholds: 4/32 Read repair chance: 1.0なんかwarn出てますよorz
Javaからアクセス
package sample; import java.nio.ByteBuffer; import org.apache.cassandra.thrift.Cassandra.Client; import org.apache.cassandra.thrift.Column; import org.apache.cassandra.thrift.ColumnParent; import org.apache.cassandra.thrift.ConsistencyLevel; import org.apache.cassandra.thrift.InvalidRequestException; import org.apache.cassandra.thrift.TimedOutException; import org.apache.cassandra.thrift.UnavailableException; import org.apache.cassandra.utils.ByteBufferUtil; import org.apache.thrift.TException; import org.apache.thrift.protocol.TBinaryProtocol; import org.apache.thrift.protocol.TProtocol; import org.apache.thrift.transport.TFramedTransport; import org.apache.thrift.transport.TSocket; import org.apache.thrift.transport.TTransport; import org.apache.thrift.transport.TTransportException; public class SimpleInsert { public SimpleInsert() { } public static final void main(String[] args) { TTransport tTransport = new TFramedTransport(new TSocket("localhost", 9160)); TProtocol tProtocol = new TBinaryProtocol(tTransport); try { tTransport.open(); } catch (TTransportException e) { throw new RuntimeException(e); } Client client = new Client(tProtocol); try { client.set_keyspace("Sample1"); ByteBuffer key = ByteBufferUtil.bytes("sample1"); ColumnParent columnParent = new ColumnParent("Standard1") .setSuper_column((ByteBuffer) null); Column column = new Column( ByteBufferUtil.bytes("hoge"), ByteBufferUtil.bytes("sample_value"), System.currentTimeMillis()); client.insert(key, columnParent, column, ConsistencyLevel.ONE); tTransport.flush(); } catch (TTransportException e) { throw new RuntimeException(e); } catch (InvalidRequestException e) { throw new RuntimeException(e); } catch (UnavailableException e) { throw new RuntimeException(e); } catch (TimedOutException e) { throw new RuntimeException(e); } catch (TException e) { throw new RuntimeException(e); } finally { tTransport.close(); } } }
確認
$ ./bin/cassandra_cliなんか入ってる?
[default@Sample1] connect localhost/9160; [default@Sample1] use Sample1; [default@Sample1] get Standard1['sample1']; => (column=686f6765, value=73616d706c655f76616c7565, timestamp=1296460094273)Returned 1 results.see also: http://gihyo.jp/dev/serial/01/cassandra/0001
see also: http://d.hatena.ne.jp/amanar/20110109/1294570753
0 件のコメント:
コメントを投稿