What is the best way to test Cassandra applications? - cassandra

I am currently using Achilles Embedded to spin up a local, temporary Cassandra instance and test my functionality there. While this is working to some extend, there seems to be a memory leak as the more tests I run, the more I see messages like PS Scavenge GC in xx ms, and my system slows to a crawl, even freezing the mouse pointer.
So, is there a better way to automatically spin up a small Cassandra instance to run my tests against?

The tool I use for quickly creating a local Cassandra cluster is the ccm (Cassandra Cluster Manager) utility. You can easily create a multi-node cluster on your local machine for any release. See more information here.
I believe some of the Cassandra developers use ccm for their development work, so ccm is kept up to date with the newest releases.

I agree, you can use use CCM. if you have a test cluster. Try using cassandra stress tool (Either standalone or using yam profile). If I am getting your question correct, it will solve your problem.

Related

Cassandra: Avoid disabling swap system wide?

I have just started with Cassandra. I have installed on two Ubuntu 16.04 boxes (i7, 16gb RAM) in a development environment.
On startup I get the following warning:
Cassandra server running in degraded mode. Is swap disabled?
I understand the reasons for this (i.e., performance deprecation).
However, disabling swap for these two boxes is not going to work in my dev environment.
I found an alternative here (requiring JNA with Cassandra), but I think it is out of date.
Is there a current alternative to disabling swap system wide?
ALSO: At what kind of data throughput rates will performance deprecate? Can the issue be ignored in development?
Your Cassandra nodes will work perfectly fine, unless it start to swap. To prevent this scenario, check your hea size settings, pay attention to off heap allocation if you enable it in your cassandra.yaml. Very importantly, pay close attention to any other services you run on your node. Custom agent? Monitoring agent? Spark workers? Make sure you dont overallocate memory overall.

suggest Free tools to monitor cassandra cluster performance

I want to monitor cassandra cluster on CentOS machine. Suggest me Free tools to monitor performance in terms of discs, RAM, nodetool commands and other parameters.
thanks
Have a look at Prometheus.io and the various exporters.
Here's a good blog on it: http://www.robustperception.io/monitoring-cassandra-with-prometheus/ .
In terms of the nodetool commands etc.. you would probably be worth automating things like this via tools like Ansible and/or Rundeck.
You can also have a look at axonops.com .
There are many host side monitoring tools,
I personally use Nmon for a my host side monitoring of a cassandra cluster.
See also: Installing NMon
You can easily create graphs out of the nmon results using NMONVisualizer

How to change cassandra standalone mode to distributed

I have installed Cassandra 2.1 stand alone mode in two nodes seperately.
Is there any way to change both to distributed or make both the node used in one cluster.
please help.
This is what you're looking for: https://docs.datastax.com/en/cassandra/2.1/cassandra/operations/ops_add_node_to_cluster_t.html
I also suggest taking a look at this hands on training course: https://academy.datastax.com/courses/ds201-cassandra-core-concepts
It's free and definitely worth your time if you're thinking about using Cassandra in production.

YCSB for Cassandra 3.0 Benchmarking

I have a cassandra ubuntu visual cluster and need to benchmark it.
I try to do it with yahoo's ycsb (without use of maven if possible).
I use cassandra 3.0.1 but I cant find a suitbale version of ycsb.
I dont want to change to an oldest version of cassandra (ycsb latest cassandra-binding is for cassandra 2.x)
What should I do?
As suggested here, despite Cassandra 3.x is not officially supported, you can use the cassandra-cql binding.
For instance:
/bin/ycsb load cassandra-cql -threads 4 -P workloads/workloada
I just tested it on Cassandra 3.11.0 and it works for both load and run.
That said, the benchmark software to use depends on your test schedule. If you want to benchmark only Cassandra, then #gsteiner 's solution might be the best. If you want to benchmark different databases using the same tool to avoid variability, then YCSB is the right one.
I would recommend using Cassandra-stress to perform a load/performance test on your Cassandra cluster. It is very customizable, to the point that you can test distributions with different data models as well as specify how hard you want to push your cluster.
Here is a link to the Datastax documentation for it that goes into how to use the tool in depth.
https://docs.datastax.com/en/cassandra/2.1/cassandra/tools/toolsCStress_t.html

does Cassandra's CCM tool only support one keyspace?

I am working with a cluster I created with ccm. We are using 3 tables in 2 keyspaces, so 6 tables in total. I was having a problem that it let me create one table in one keyspace and 2 in the other but even when I removed my
IF NOT EXISTS
check then it would give me an error saying it already exists. It seems that the create is ignoring the fact that these are supposed to be in 2 separate keyspaces;
These are the same cql script files that we run against our dev cloud Cassandra cluster, so I know its not an issue with the scripts. That, and the create statements are pretty simple and straightforward.
So does CCM only support one keyspace? If so, that seems like a pretty big limitation and makes it much much less useful, if we can even use it at all for our local dev and testing purposes.
Thanks!
The answer to your question is: No, CCM doesn't support only one keyspace.
CCM doesn't have any restrictions at all built into it. Under the covers it is just a set of python scripts for configuring and launching a cassandra cluster on a single machine.

Resources