Cassandraの利用方法
提供: LunaBiblos
Software > DataBase > KeyValueストア > Cassandraの利用方法
目次 |
Server Consoleからの利用
Cassandraが動作するServer上で下記のCommandを実行します。なお末尾で利用するポート番号は設定ファイルで指定した番号です。
下記Commandを実行するとOracleで言うSQL PLUS、HBaseで言うHBase Shellに相当する画面が開きます。またCassandra Cluster環境下では、そのClusterに参加しているNodeのホスト名かIPであれば同一空間のDatabaseに接続する事が出来ます。
設定ファイルに関してはCassandraの設定を参照してください。
sudo cassandra-cli -host ${接続先ホスト名orIP} -port 9160
外部Programからの利用
Server側設定
thriftを利用してCassandraに接続出来る様に設定を施します。
接続Clientの準備
今回はJavaで接続する方法の解説です。JavaからCassandraに接続する場合はThriftを利用します。以下に挙げるのがJavaからCassandraに接続する際に必要となるJARファイルです。
XXXは各ファイルのVerに相当する数字部分です。
| apache-cassandra-incubating-XXX.jar |
| libthrift-rXXX.jar |
| slf4j-api-XXX.jar |
| slf4j-log4j12-XXX.jar |
Cluster管理
| 全TableData再割り当て | nodetool -h localhost loadbalance |
| サーバ監視 | nodetool -h localhost tpstats nodetool -h localhost cfstats |
| Memtable上DataをDiskへ強制書き出し | nodetool -h localhost flush |
| Snapshotの取得 | nodetool -h localhost snapshot snapshotname |
| Snapshotの削除 | nodetool -h localhost clearsnapshot |
DataのBackupとRestore
Cassandraは以下のCommandを利用する事でDataのExportとImportを行う事が出来ます。
- JSON形式への出力
sstable2json [-f outfile] <sstable> [-k key [-k key [...]]]
- JSONからSSTableへ取り込み
json2sstable -K keyspace -c column_family <json> <sstable>
SampleCode
NodeTool Command
関係Class
- org.apache.cassandra.service.StorageServiceMBean
- org.apache.cassandra.tools.NodeCmd
Command解説
| ring | 現在のClusterのRing(各Nodeが担当するTokenの一覧)を表示する |
| info | 現在のClusterの状況を表示 |
| cleanup | 余剰となっているReplicationDataを削除する |
| compact | Compactionを走らせる |
| cfstats | 各ColumnFamily毎の詳細な状況を表示する |
| snapshot <SnapShot名> | ${DataFileDirectory}/<KeySpace>/snapshot/XXXXX-<SnapShot名> に実行時のSnapShotを作る |
| clearsnapshot | 上記DirectoryにあるSnapShotのDataを削除します |
| tpstats | Clusterの負荷状況を表示する |
| flush <KeySpace> | まだDisk上に保存されていないDataを強制的に保存する (MemtableをSSTableとしてDsikに出力する) |
| drain <KeySpace> | CommitLogの有無を確認し、ある場合はMemtableを作成し更にFlushを行いSSTableを作成する |
| repair <KeySpace> | Cluster中にある全ReplicaDataを取得、比較し、最新版でない物があれば最新に書き換えます。 |
| decommission | 現在稼働しているNodeをClusterから取り除き、かつringも更新する |
| move | 既存のNodeを、一度ring上から取り除き、新規Nodeとして追加する |
| loadbalance | Ring上にある各Nodeが持つData量を調べ、それらが均等に成るように各Nodeの担当する範囲を変更する |
| removetoken | 現在停止しているNodeをClusterから取り除き、かつringも更新する |
| setcachecapacity <keyspace> <cfname> <keycachecapacity> <rowcachecapacity> | Memory上にCacheするData量を変更します |
| getcompactionthreshold | Compactionを実行する閾値を表示します |
| setcompactionthreshold [minthreshold] ([maxthreshold])streams [host] | Compactionを実行する閾値を接石ます |