久しぶりに、Ubuntu LinuxにApache Cassandraをインストールしてみようと思います。
前に使った時は、まだバージョン 1系でしたが、今は3系なんですねー。現在は、3.9が最新の
バージョンみたいです。
なんと、Debian系にはパッケージが提供されているみたいなので、こちらを使います。
※どうしてyumでは入れられないんでしょう…?
ところで、ドキュメントについてはこちらを見ることになりそうです。
Apache Cassandra Documentation
もしくは、DataStaxのもの。
日本語版もありそう。
インストール
では、手順に従ってインストールしてみます。
$ echo "deb http://www.apache.org/dist/cassandra/debian 39x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list $ curl https://www.apache.org/dist/cassandra/KEYS | sudo apt-key add - $ sudo apt-get update $ sudo apt-get install cassandra
GPGのエラーが出る場合は、追加の手順が必要みたいです。
起動。
$ sudo service cassandra start
停止。
$ sudo service cassandra stop
動作状況の確認は、「nodetool」で。
$ nodetool status Datacenter: datacenter1 ======================= Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 127.0.0.1 140.15 KiB 256 100.0% b3c076ea-24d3-4582-8e3c-226f71b8c960 rack1
各種(デフォルト)ディレクトリ
設定は、「/etc/cassandra」ディレクトリに置かれます。
$ ls -l /etc/cassandra total 100 -rw-r--r-- 1 root root 11854 Sep 26 15:05 cassandra-env.sh -rw-r--r-- 1 root root 1200 Sep 26 14:55 cassandra-rackdc.properties -rw-r--r-- 1 root root 1358 Sep 26 14:55 cassandra-topology.properties -rw-r--r-- 1 root root 51739 Sep 26 15:05 cassandra.yaml -rw-r--r-- 1 root root 2082 Sep 26 14:55 commitlog_archiving.properties -rw-r--r-- 1 root root 9074 Sep 26 14:55 jvm.options -rw-r--r-- 1 root root 1193 Sep 26 14:55 logback-tools.xml -rw-r--r-- 1 root root 3785 Sep 26 14:55 logback.xml drwxr-xr-x 2 root root 4096 Jan 11 14:00 triggers
ログは、「/var/log/cassandra」ディレクトリに出力されます。
$ ls -l /var/log/cassandra total 200 -rw-r--r-- 1 cassandra cassandra 136219 Jan 11 14:02 debug.log -rw-r--r-- 1 cassandra cassandra 22441 Jan 11 14:03 gc.log.0.current -rw-r--r-- 1 cassandra cassandra 39783 Jan 11 14:02 system.log
データは、「/var/lib/cassandra」ディレクトリに配置されます、と。
$ ls -l /var/lib/cassandra total 16 drwxr-xr-x 2 cassandra cassandra 4096 Jan 11 14:01 commitlog drwxr-xr-x 7 cassandra cassandra 4096 Jan 11 14:01 data drwxr-xr-x 2 cassandra cassandra 4096 Jan 11 14:01 hints drwxr-xr-x 2 cassandra cassandra 4096 Jan 11 14:01 saved_caches
CQLで確認
最後に、CQLを使って確認してみましょう。
$ cqlsh localhost Connected to Test Cluster at localhost:9042. [cqlsh 5.0.1 | Cassandra 3.9 | CQL spec 3.4.2 | Native protocol v4] Use HELP for help. cqlsh>
CQLのドキュメントは、DataStaxのものを見た方が良さそうです。
CQL for Apache Cassandra 3.0 (Earlier version)
キースペースの作成。
cqlsh> CREATE KEYSPACE IF NOT EXISTS test_keyspace WITH REPLICATION = { 'class': 'SimpleStrategy', 'replication_factor': 3 };
作成したキースペースの利用。
cqlsh> USE test_keyspace; cqlsh:test_keyspace>
テーブルの作成。今回は、書籍で。
cqlsh:test_keyspace> CREATE TABLE book ( isbn text PRIMARY KEY, title text, price int);
確認。
cqlsh:test_keyspace> DESCRIBE book; CREATE TABLE test_keyspace.book ( isbn text PRIMARY KEY, price int, title text ) WITH bloom_filter_fp_chance = 0.01 AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'} AND comment = '' AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'} AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'} AND crc_check_chance = 1.0 AND dclocal_read_repair_chance = 0.1 AND default_time_to_live = 0 AND gc_grace_seconds = 864000 AND max_index_interval = 2048 AND memtable_flush_period_in_ms = 0 AND min_index_interval = 128 AND read_repair_chance = 0.0 AND speculative_retry = '99PERCENTILE';
データの登録。
cqlsh:test_keyspace> INSERT INTO book ( isbn, title, price ) VALUES ('978-4873115290', 'Cassandra', 3672); cqlsh:test_keyspace> INSERT INTO book ( isbn, title, price ) VALUES ('978-1449358549', 'Elasticsearch: The Definitive Guide', 5432); cqlsh:test_keyspace> INSERT INTO book ( isbn, title, price ) VALUES ('978-1449305048', 'Redis Cookbook', 2505);
確認。
cqlsh:test_keyspace> SELECT * FROM book; isbn | price | title ----------------+-------+------------------------------------- 978-1449358549 | 5432 | Elasticsearch: The Definitive Guide 978-4873115290 | 3672 | Cassandra 978-1449305048 | 2505 | Redis Cookbook (3 rows)
ソートは、このテーブル定義だとできません、と…。
いったん、ここまでで。