3 ms·
I don't follow the 'Why run Cassandra in a container and not just on the whole machine?' arguments. The first two seem to argue against the concept (because you
by stubish 10y ago
I don't follow the 'Why run Cassandra in a container and not just on the whole machine?' arguments. The first two seem to argue against the concept (because you need to coordinate what machine the container is running on). And the third talking about something completely different (its talking about a single cluster vs multiple clusters, nothing to do with containers).
I'm curious how they can start up one new node in a cluster per minute, when last I saw Cassandra required 2 minutes after bringing a new node online for things to settle before starting a new one. Its a pain point for me running tests that need to startup and teardown Cassandra clusters, and I'd love to know when and how it can be avoided.
(Maybe I need to watch the actual talk)
- deleted 10y ago[deleted]
- stonemetal 10y agoI haven't worked with Cassandra much but I know the Elastic Search guys suggest running multiple nodes per box if your hardware is too big. They claim that the JVM works better if you keep its heap size under 32GB. Since Cassandra also runs on the JVM maybe a similar logic applies to it? Later on he mentions each Cassandra process gets 32GB heap.
- snuxoll 10y agoSounds like it would make tuning your RF for durability a pain in the ass if you run multiple cassandra nodes on the same box. Cassandra uses non-JVM managed memory for a fair amount of work and relies heavily on the OS filesystem cache (much like Pg), unless you are consolidating multiple Cassandra clusters to one box I would keep one node per physical machine for durability reasons alone.
- ddorian43 10y agoThey've been moving as many stuff as possible outside of the heap or to filesystem.
- user5994461 10y agoThe 32GB is a global guidelines for ALL JVM applications. Under 32GB, the JVM uses 32 bits pointers. [actually slightly under 32GB] Over 32GB, the JVM uses 64 bits pointers. Pointers consume a lot of space in a running program. Basically, a 30 GB heap (with 32bits pointers) is the same as a 40GB heap (with 64bits pointers). That means, there is a chasm between 30-40GB heap where it makes no sense to run a server. The additional space is wasted by the bigger pointers. Second, 30GB is a sweet stop. It's simple to justify and enough for most applications. (A bigger heap will give longer GC time and other side effects, most people don't need to get into that kind of optimizations).