1

I am running a small Cassandra 2.2.1 test cluster with 3 computers in it. Two of them are i7s and one is a somewhat slower i5, but I didn't bother when first setting things up to give this slower machine a proportionally lower number of vnodes, as I thought things would be IO bound (they all have SSDs and 16GB RAM). They're all on default 256 vnodes.

I'm finding Cassandra actually to be quite CPU intensive though and this i5 seems to be holding things up (running 100%x4 on HTOP). Can I reduce its number of Vnodes to say, 192 in cassandra.yaml, restart just that node, and expect the whole 3-machine cluster to rebalance? Share out the new vnode allocations automatically etc? Or do I have to do something on the i5 alone, or perhaps on all 3 machines with nodetool?

I am finding the documentation somewhat unclear on this as it talks mostly about adding new nodes rather than changing vnodes on existing hardware.

Thomas Browne
  • 23,824
  • 32
  • 78
  • 121

2 Answers2

4

A simple restart won't allow you to change the number of vnodes.

You'll need to do a nodetool decommission or nodetool removenode for the i5 node, then stop Cassandra on that node, scrub all the data, update num_tokens, then start Cassandra back up and let it rejoin the cluster as an empty new node with the reduced number of tokens. Then Cassandra will rebalance with the reduced number of tokens on the i5 box.

At least that's how it is in 2.1.9, but probably it is the same in the newer branches too.

Jim Meyer
  • 9,275
  • 1
  • 24
  • 49
  • Okay - and by scrubbing the data you mean going into cqlsh, dropping all the tables and keyspaces, and *also* removing the data files and commit logs in /var/lib/cassandra/data and /var/lib/cassandra/commitlog? – Thomas Browne Sep 06 '15 at 07:58
  • 2
    See this http://stackoverflow.com/questions/31377824/how-to-completely-clear-down-reset-and-restart-a-cassandra-cluster/31383208#31383208 – Jim Meyer Sep 06 '15 at 11:51
  • simpler to just remove cassandra and reinstall it. That's the end result of what you've described above. – Walker Rowe Jan 10 '19 at 20:40
0

I don't have sufficient reputation to comment, but to answer Thomas Browne's question: Don't do that! If you drop the tables and keyspaces, you'll lose all the data on all the nodes. What you'll want to do is stop cassandra, go to your data directory on the node you're modifying, and rm -rf * the data in that directory. Eg: rm -rf /var/lib/cassandra/*

user2432419
  • 51
  • 2
  • 2