Cassandra - shawfdong/hyades GitHub Wiki

Apache Cassandra is a free and open-source distributed database management system designed to handle large amounts of data across many commodity servers, providing high availability with no single point of failure. Interestingly, the network performance and troubleshooting tool, perfSONAR, uses Cassandra; although typically perfSONAR runs on a single server.

Let's check the status of the Cassandra cluster on one of our perfSONAR boxes[1]:

# nodetool status
Failed to connect to '127.0.0.1:7199': Connection refused
so JMX (Java Management Extensions) remote connection was not enabled[2].

To enable JMX remote connection, uncomment the following lines in /etc/cassandra/default.conf/cassandra-env.sh:

JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.port=$JMX_PORT"
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.ssl=false"
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=false"

Restart Cassandra:

# service cassandra restart

Then we were able to check the status of the Cassandra cluster:

# nodetool status
Note: Ownership information does not include topology; for complete information, specify a keyspace
Datacenter: datacenter1

=======================

Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address    Load       Owns   Host ID                               Token                                    Rack
UN  127.0.0.1  101.02 MB  100.0%  d88de376-d087-4ac6-a8e2-2166ae0ad5bd  -9047867919027360828                     rack1

Unsurprisingly, there is only one node in the cluster.

We can use the Cassandra Query Language shell (cqlsh) to communicate with Cassandra[3]:

# cqlsh 
Connected to Test Cluster at localhost:9160.
[cqlsh 4.1.1 | Cassandra 2.0.7 | CQL spec 3.1.1 | Thrift protocol 19.39.0]
Use HELP for help.
cqlsh> desc keyspaces;

system  system_traces  esmond

cqlsh> use system;
cqlsh:system> desc tables;         

IndexInfo                hints        range_xfers            sstable_activity
NodeIdInfo               local        schema_columnfamilies
batchlog                 paxos        schema_columns       
compaction_history       peer_events  schema_keyspaces     
compactions_in_progress  peers        schema_triggers      

cqlsh:system> describe table local;

CREATE TABLE local (
  key text,
  bootstrapped text,
  cluster_name text,
  cql_version text,
  data_center text,
  gossip_generation int,
  host_id uuid,
  native_protocol_version text,
  partitioner text,
  rack text,
  release_version text,
  schema_version uuid,
  thrift_version text,
  tokens set<text>,
  truncated_at map<uuid, blob>,
  PRIMARY KEY (key)
) WITH
  bloom_filter_fp_chance=0.010000 AND
  caching='KEYS_ONLY' AND
  comment='information about the local node' AND
  dclocal_read_repair_chance=0.000000 AND
  gc_grace_seconds=0 AND
  index_interval=128 AND
  read_repair_chance=0.000000 AND
  replicate_on_write='true' AND
  populate_io_cache_on_flush='false' AND
  default_time_to_live=0 AND
  speculative_retry='99.0PERCENTILE' AND
  memtable_flush_period_in_ms=3600000 AND
  compaction={'class': 'SizeTieredCompactionStrategy'} AND
  compression={'sstable_compression': 'LZ4Compressor'};

cqlsh:system> select key,host_id from local;

 key   | host_id
-------+--------------------------------------
 local | d88de376-d087-4ac6-a8e2-2166ae0ad5bd

(1 rows)

References

  1. ^ The nodetool utility
  2. ^ Monitoring a Cassandra cluster
  3. ^ cqlsh
⚠️ **GitHub.com Fallback** ⚠️