Cassandra
Cassandra is an eventually consistent key value store similar to HBase and Google`s Bigtable. It implements a distributed hash map with column families originally it supported a Thrift based API very close to HBase`s. Lately Cassandra has moved towards a SQL like query language with much more flexibility around data types, joints and filters. Thankfully the Thrift interface is still there so it`s easy to convert the OpenTSDB HBase schema and calls to Cassandra at a low level through the AsyncHBase HBaseClient
API. AsyncCassandra is a shim between OpenTSDB and Cassandra for trying out TSDB with an alternate backend.
Setup
- Setup a Cassandra cluster using the
ByteOrderedPartitioner
. This is critical as we require the row keys to be sorted. Because this setting affects the entire node, you may need to setup a cluster dedicated to OpenTSDB. - Create the proper keyspsaces and column families by using the cassandra-cli script:
create keyspace tsdb; use tsdb; create column family t with comparator = BytesType; create keyspace tsdbuid; use tsdbuid; create column family id with comparator = BytesType; create column family name with comparator = BytesType;
- Build TSDB by executing sh build-cassandra.sh (or if you prefer Maven, sh build-cassandra.sh pom.xml)
- Modify your opentsdb.conf file with the asynccassandra.seeds parameter, e.g. asynccassandra.seeds=127.0.0.1:9160.
- In the config file, set tsd.storage.hbase.uid_table=tsdbuid
- Run the tsd via build/tsdb tsd --config=<path>/opentsdb.conf
If you intend to use meta data or tree features, repeat the keyspace creation with the proper table name.
Configuration
The following is a table with required and optional parameters to run OpenTSDB with Cassandra. These are in addition to the standard TSD configuration parameters from Configuration
Property | Type | Required | Description | Default |
---|---|---|---|---|
asynccassandra.seeds | String | Required | The list of nodes in your Cassandra cluster. These can be formatted <hostname>:<port> | |
asynccassandra.port | Integer | Optional | An optional port to use for all nodes if not configured in the seeds setting. | 9160 |
© 2010–2016 The OpenTSDB Authors
Licensed under the GNU LGPLv2.1+ and GPLv3+ licenses.
http://opentsdb.net/docs/build/html/user_guide/backends/cassandra.html