SlideShare a Scribd company logo
1 of 43
Ben Bromhead
Cassandra… Every day I’m scaling
2© DataStax, All Rights Reserved.
Who am I and What do I do?
• Co-founder and CTO of Instaclustr -> www.instaclustr.com
• Instaclustr provides Cassandra-as-a-Service in the cloud.
• Currently support AWS, Azure, Heroku, Softlayer and Private DCs with more to come.
• Approaching 1000 nodes under management
• Yes… we are hiring! Come live in Australia!
© DataStax, All Rights Reserved. 3
1 Why scaling sucks in Cassandra
2 It gets better
3 Then it gets really awesome
4© DataStax, All Rights Reserved.
Linear Scalability – In theory
© DataStax, All Rights Reserved. 5
Linear Scalability – In practice
© DataStax, All Rights Reserved. 6
What’s supposed to happen
• Scaling Cassandra is just “bootstrap new nodes”
• That works if your cluster is under provisioned and has 30% disk usage
© DataStax, All Rights Reserved. 7
What actually happens
• Add 1 node
• Bootstrapping node fails (1 day)
• WTF - Full disk on bootstrapping node? (5 minutes)
• If STCS run SSTableSplit on large SSTables on original nodes (2 days)
• Attach super sized network storage (EBS) and bind mount to bootstrapping node.
© DataStax, All Rights Reserved. 8
What actually happens
• Restart bootstrapping process
• Disk alert 70% (2 days later)
• Throttle streaming throughput to below compaction throughput
• Bootstrapping finishes (5 days later)
• Cluster latency spikes cause bootstrap finished but their was a million compactions
remaining
• Take node offline and let compaction finish
• Run repair on node (10 years)
• Add next node.
© DataStax, All Rights Reserved. 9
What actually happens
© DataStax, All Rights Reserved. 10
Scalability in Cassandra sucks
• Soo much over streaming
• LCS and Bootstrap – Over stream then compact all the data!
• STCS and bootstrap – Over stream all the data and run out of disk space
© DataStax, All Rights Reserved. 11
Scalability in Cassandra sucks
• No vnodes? – Can only double your cluster
• Vnodes? – Can only add one node at a time
• Bootstrap – Fragile and not guaranteed to be consistent
© DataStax, All Rights Reserved. 12
Why does it suck for you
Your database never meets your business requirements from a capacity perspective
(bad) and if you try…
• You could interrupt availability and performance (really bad)
• You could loose data (really really bad)
© DataStax, All Rights Reserved. 13
How did it get this way?
It’s actually a hard problem:
• Moving large amounts of data between nodes requires just as much attention to it
from a CAP perspective as client facing stuff.
• New features don’t tend to consider impact on scaling operations
• Features that help ops tends to be less sexy
© DataStax, All Rights Reserved. 14
Does it get better?
© DataStax, All Rights Reserved. 15
Yes!
Does it get better? Consistent bootstrap
Strongly consistent membership and ownership – CASSANDRA-9667
• Using LWT to propose and claim ownership of new token allocations in a consistent
manner
• Work in progress
• You can do this today by pre-assigning non-overlapping (inc replicas) vnode tokens
and using cassandra.consistent.simultaneousmoves.allow=true as a JVM property
before bootstrapping your nodes
© DataStax, All Rights Reserved. 16
Does it get better? Bootstrap stability
Keep-alives for all streaming operations – CASSANDRA-11841
• Currently implements a timeout, you can reduce this to be more aggressive, but large
SSTables will then never stream
Resummable bootstrap – CASSANDRA-8942 & CASSANDRA-8838
• You can do this in 2.2+
Incremental bootstrap – CASSANDRA-8494
• Being worked on, hard to do with vnodes right now (try it… the error message uses
the word “thusly”), instead throttle streaming and uncap compaction to ensure the
node doesn’t get overloaded during bootstrap
© DataStax, All Rights Reserved. 17
Can we make it even better?
© DataStax, All Rights Reserved. 18
Yes!
Can we make it even better?
© DataStax, All Rights Reserved. 19
• Let’s try scaling without data ownership changes
• Take advantage of Cassandras normal partition and availability mechanisms
• With a little help from our cloud providers!
Introducing token pinned scaling
© DataStax, All Rights Reserved. 20
• Probably needs a better name
• Here is how it works
Introducing token pinned scaling
© DataStax, All Rights Reserved. 21
With the introduction of:
• Partitioning SSTables by Range (CASSANDRA-6696)
• Range Aware Compaction (CASSANDRA-10540)
• A few extra lines of code to save/load a map of token to disks (coming soon)
Cassandra will now keep data associated with specific tokens in a single data directory,
this could let us treat a disk as a unit in which to scale around!
But first what do these two features actually let us do?
Introducing token pinned scaling
© DataStax, All Rights Reserved. 22
Before Partitioning SSTables by Range and Range Aware Compaction:
1 - 100
901 - 1000
1401-1500
Disk0 Disk1
SSTables
Introducing token pinned scaling
© DataStax, All Rights Reserved. 23
After Partitioning SSTables by Range and Range Aware Compaction:
1 - 100
901 - 1000
1401-1500
Disk0 Disk1
SSTables
Data within a token range is now kept on a specific disk
Introducing token pinned scaling
© DataStax, All Rights Reserved. 24
Your SSTables will converge to contain a single vnode range when things get big enough
1 - 100
901 - 1000
1401-1500
Disk0 Disk1
SSTables
Leveraging EBS to separate I/O from CPU
© DataStax, All Rights Reserved. 25
• Amazon Web Services provides a networked attached block store called EBS (Elastic
Block Store).
• Isolated to each availability zone
• We can attach and reattach EBS disk ad-hoc and in seconds/minutes
Adding it all together
© DataStax, All Rights Reserved. 26
• Make each EBS disk a data directory in Cassandra
• Cassandra guarantees only data from a specific token range will exist on a given disk
• When throughput is low attach all disks in a single AZ to a single node, specify all the
ranges from each disk via a comma separated list of tokens.
• Up to 40 disks per instance!
• When load is high, launch more instances and spread the disks across the new
instances.
Adding it all together
© DataStax, All Rights Reserved. 27
• Make each EBS disk a data directory in Cassandra
sda
sdd
sdb
sde
sdc
sdf
Amazon EBS
Adding it all together
© DataStax, All Rights Reserved. 28
• Cassandra guarantees only data from a specific token range will exist on a given disk
Amazon EBS
Adding it all together
© DataStax, All Rights Reserved. 29
• When throughput is low attach all disks in a single AZ to a single node
Amazon EBS
200 op/s
Adding it all together
© DataStax, All Rights Reserved. 30
• When load is high, launch more instances and spread the disks across the new instances.
Amazon EBS
10,000 op/s
How it works - Scaling
© DataStax, All Rights Reserved. 31
• Normally you have to provision your cluster at your maximum operations per second +
30% (headroom in case your get it wrong).
• Provision enough IOPS, CPU, RAM etc
• Makes Cassandra an $$$ solution
Provisioned workload
Actual workload
© DataStax, All Rights Reserved. 32
How it works - Scaling
© DataStax, All Rights Reserved. 33
• Let’s make our resources match our workload
Provisioned IOPS workload
Actual workload
Provisioned CPU & RAM workload
How it works - Scaling
© DataStax, All Rights Reserved. 34
• Let’s make our resources match our workload
Provisioned IOPS workload
Actual workload
Provisioned CPU & RAM workload
How it works - Consistency
© DataStax, All Rights Reserved. 35
• No range movements! You don’t need a Jepsen test to see how bad range
movements are for consistency.
• Tokens and ranges are fixed during all scaling operations
• Range movements are where you see most consistency badness in Cassandra
(bootstrap, node replacement, decommission) and need to rely on repair.
How it works - Consistency
© DataStax, All Rights Reserved. 36
• Treats Racks as a giant “meta-node”, network topology strategy ensures replicas are
on different racks.
• AWS Rack == AZ
• As tokens for a node change based on the disk they have, replica topology stays the
same
• You can only swap disks between instances within the same AZ
• Scale one rack at a time… scale your cluster in constant time!
• If you want to do this with a single rack, you will have a bad time
How it works - Consistency
© DataStax, All Rights Reserved. 37
1,5,10
2,6,11
3, 22, 44
4,23,45
102,134,167
101,122,155
1,2,3,4,5,6,10,11,22,23,44,45,101 …
How it works - Consistency
© DataStax, All Rights Reserved. 38
1,5,10
2,6,11
3, 22, 44
4,23,45
102,134,167
101,122,155
1,5,10
2,6,11
3,22,44
4,23,45
102,134,167
101,122,155
How it works - TODO
© DataStax, All Rights Reserved. 39
Some issues remain:
• Hinted handoff breaks (handoff is based on endpoint rather than token)
• Time for gossip to settle on any decent sized cluster
• Currently just clearing out the system.local folder to allow booting
• Can’t do this while repair is running… for some people this is all the time
• You’ll need to run repair more often as scaling intentionally introduces outages
• Breaks consistency and everything where RF > number of racks (usually the
system_auth keyspace).
• More work needed!
How it works – Real world
© DataStax, All Rights Reserved. 40
• No production tests yet 
• Have gone from a 3 node cluster to a 36 node cluster in around 50 minutes.
• Plenty left to optimize (e.g. bake everything into an AMI to reduce startup time)
• Could get this down to 10 minutes per rack depending on how responsive AWS is!
• No performance overhead compared to Cassandra on EBS.
• Check out the code here: https://github.com/benbromhead/Cassandra/tree/ic-token-
pinning
How it works – Real world
© DataStax, All Rights Reserved. 41
• Really this is bending some new and impending changes to do funky stuff 
Questions?
Questions?

More Related Content

What's hot

How to size up an Apache Cassandra cluster (Training)
How to size up an Apache Cassandra cluster (Training)How to size up an Apache Cassandra cluster (Training)
How to size up an Apache Cassandra cluster (Training)DataStax Academy
 
What We Learned About Cassandra While Building go90 (Christopher Webster & Th...
What We Learned About Cassandra While Building go90 (Christopher Webster & Th...What We Learned About Cassandra While Building go90 (Christopher Webster & Th...
What We Learned About Cassandra While Building go90 (Christopher Webster & Th...DataStax
 
Monitoring Cassandra at Scale (Jason Cacciatore, Netflix) | C* Summit 2016
Monitoring Cassandra at Scale (Jason Cacciatore, Netflix) | C* Summit 2016Monitoring Cassandra at Scale (Jason Cacciatore, Netflix) | C* Summit 2016
Monitoring Cassandra at Scale (Jason Cacciatore, Netflix) | C* Summit 2016DataStax
 
Processing 50,000 events per second with Cassandra and Spark
Processing 50,000 events per second with Cassandra and SparkProcessing 50,000 events per second with Cassandra and Spark
Processing 50,000 events per second with Cassandra and SparkBen Slater
 
Tuning Speculative Retries to Fight Latency (Michael Figuiere, Minh Do, Netfl...
Tuning Speculative Retries to Fight Latency (Michael Figuiere, Minh Do, Netfl...Tuning Speculative Retries to Fight Latency (Michael Figuiere, Minh Do, Netfl...
Tuning Speculative Retries to Fight Latency (Michael Figuiere, Minh Do, Netfl...DataStax
 
Terror & Hysteria: Cost Effective Scaling of Time Series Data with Cassandra ...
Terror & Hysteria: Cost Effective Scaling of Time Series Data with Cassandra ...Terror & Hysteria: Cost Effective Scaling of Time Series Data with Cassandra ...
Terror & Hysteria: Cost Effective Scaling of Time Series Data with Cassandra ...DataStax
 
Storing Cassandra Metrics (Chris Lohfink, DataStax) | C* Summit 2016
Storing Cassandra Metrics (Chris Lohfink, DataStax) | C* Summit 2016Storing Cassandra Metrics (Chris Lohfink, DataStax) | C* Summit 2016
Storing Cassandra Metrics (Chris Lohfink, DataStax) | C* Summit 2016DataStax
 
Clock Skew and Other Annoying Realities in Distributed Systems (Donny Nadolny...
Clock Skew and Other Annoying Realities in Distributed Systems (Donny Nadolny...Clock Skew and Other Annoying Realities in Distributed Systems (Donny Nadolny...
Clock Skew and Other Annoying Realities in Distributed Systems (Donny Nadolny...DataStax
 
Optimizing Your Cluster with Coordinator Nodes (Eric Lubow, SimpleReach) | Ca...
Optimizing Your Cluster with Coordinator Nodes (Eric Lubow, SimpleReach) | Ca...Optimizing Your Cluster with Coordinator Nodes (Eric Lubow, SimpleReach) | Ca...
Optimizing Your Cluster with Coordinator Nodes (Eric Lubow, SimpleReach) | Ca...DataStax
 
Operations, Consistency, Failover for Multi-DC Clusters (Alexander Dejanovski...
Operations, Consistency, Failover for Multi-DC Clusters (Alexander Dejanovski...Operations, Consistency, Failover for Multi-DC Clusters (Alexander Dejanovski...
Operations, Consistency, Failover for Multi-DC Clusters (Alexander Dejanovski...DataStax
 
Webinar: Getting Started with Apache Cassandra
Webinar: Getting Started with Apache CassandraWebinar: Getting Started with Apache Cassandra
Webinar: Getting Started with Apache CassandraDataStax
 
Cassandra Tuning - above and beyond
Cassandra Tuning - above and beyondCassandra Tuning - above and beyond
Cassandra Tuning - above and beyondMatija Gobec
 
Lessons Learned on Java Tuning for Our Cassandra Clusters (Carlos Monroy, Kne...
Lessons Learned on Java Tuning for Our Cassandra Clusters (Carlos Monroy, Kne...Lessons Learned on Java Tuning for Our Cassandra Clusters (Carlos Monroy, Kne...
Lessons Learned on Java Tuning for Our Cassandra Clusters (Carlos Monroy, Kne...DataStax
 
Lessons Learned From Running 1800 Clusters (Brooke Jensen, Instaclustr) | Cas...
Lessons Learned From Running 1800 Clusters (Brooke Jensen, Instaclustr) | Cas...Lessons Learned From Running 1800 Clusters (Brooke Jensen, Instaclustr) | Cas...
Lessons Learned From Running 1800 Clusters (Brooke Jensen, Instaclustr) | Cas...DataStax
 
Running Cassandra on Amazon EC2
Running Cassandra on Amazon EC2Running Cassandra on Amazon EC2
Running Cassandra on Amazon EC2Dave Gardner
 
Load testing Cassandra applications
Load testing Cassandra applicationsLoad testing Cassandra applications
Load testing Cassandra applicationsBen Slater
 
Cassandra on Mesos Across Multiple Datacenters at Uber (Abhishek Verma) | C* ...
Cassandra on Mesos Across Multiple Datacenters at Uber (Abhishek Verma) | C* ...Cassandra on Mesos Across Multiple Datacenters at Uber (Abhishek Verma) | C* ...
Cassandra on Mesos Across Multiple Datacenters at Uber (Abhishek Verma) | C* ...DataStax
 

What's hot (17)

How to size up an Apache Cassandra cluster (Training)
How to size up an Apache Cassandra cluster (Training)How to size up an Apache Cassandra cluster (Training)
How to size up an Apache Cassandra cluster (Training)
 
What We Learned About Cassandra While Building go90 (Christopher Webster & Th...
What We Learned About Cassandra While Building go90 (Christopher Webster & Th...What We Learned About Cassandra While Building go90 (Christopher Webster & Th...
What We Learned About Cassandra While Building go90 (Christopher Webster & Th...
 
Monitoring Cassandra at Scale (Jason Cacciatore, Netflix) | C* Summit 2016
Monitoring Cassandra at Scale (Jason Cacciatore, Netflix) | C* Summit 2016Monitoring Cassandra at Scale (Jason Cacciatore, Netflix) | C* Summit 2016
Monitoring Cassandra at Scale (Jason Cacciatore, Netflix) | C* Summit 2016
 
Processing 50,000 events per second with Cassandra and Spark
Processing 50,000 events per second with Cassandra and SparkProcessing 50,000 events per second with Cassandra and Spark
Processing 50,000 events per second with Cassandra and Spark
 
Tuning Speculative Retries to Fight Latency (Michael Figuiere, Minh Do, Netfl...
Tuning Speculative Retries to Fight Latency (Michael Figuiere, Minh Do, Netfl...Tuning Speculative Retries to Fight Latency (Michael Figuiere, Minh Do, Netfl...
Tuning Speculative Retries to Fight Latency (Michael Figuiere, Minh Do, Netfl...
 
Terror & Hysteria: Cost Effective Scaling of Time Series Data with Cassandra ...
Terror & Hysteria: Cost Effective Scaling of Time Series Data with Cassandra ...Terror & Hysteria: Cost Effective Scaling of Time Series Data with Cassandra ...
Terror & Hysteria: Cost Effective Scaling of Time Series Data with Cassandra ...
 
Storing Cassandra Metrics (Chris Lohfink, DataStax) | C* Summit 2016
Storing Cassandra Metrics (Chris Lohfink, DataStax) | C* Summit 2016Storing Cassandra Metrics (Chris Lohfink, DataStax) | C* Summit 2016
Storing Cassandra Metrics (Chris Lohfink, DataStax) | C* Summit 2016
 
Clock Skew and Other Annoying Realities in Distributed Systems (Donny Nadolny...
Clock Skew and Other Annoying Realities in Distributed Systems (Donny Nadolny...Clock Skew and Other Annoying Realities in Distributed Systems (Donny Nadolny...
Clock Skew and Other Annoying Realities in Distributed Systems (Donny Nadolny...
 
Optimizing Your Cluster with Coordinator Nodes (Eric Lubow, SimpleReach) | Ca...
Optimizing Your Cluster with Coordinator Nodes (Eric Lubow, SimpleReach) | Ca...Optimizing Your Cluster with Coordinator Nodes (Eric Lubow, SimpleReach) | Ca...
Optimizing Your Cluster with Coordinator Nodes (Eric Lubow, SimpleReach) | Ca...
 
Operations, Consistency, Failover for Multi-DC Clusters (Alexander Dejanovski...
Operations, Consistency, Failover for Multi-DC Clusters (Alexander Dejanovski...Operations, Consistency, Failover for Multi-DC Clusters (Alexander Dejanovski...
Operations, Consistency, Failover for Multi-DC Clusters (Alexander Dejanovski...
 
Webinar: Getting Started with Apache Cassandra
Webinar: Getting Started with Apache CassandraWebinar: Getting Started with Apache Cassandra
Webinar: Getting Started with Apache Cassandra
 
Cassandra Tuning - above and beyond
Cassandra Tuning - above and beyondCassandra Tuning - above and beyond
Cassandra Tuning - above and beyond
 
Lessons Learned on Java Tuning for Our Cassandra Clusters (Carlos Monroy, Kne...
Lessons Learned on Java Tuning for Our Cassandra Clusters (Carlos Monroy, Kne...Lessons Learned on Java Tuning for Our Cassandra Clusters (Carlos Monroy, Kne...
Lessons Learned on Java Tuning for Our Cassandra Clusters (Carlos Monroy, Kne...
 
Lessons Learned From Running 1800 Clusters (Brooke Jensen, Instaclustr) | Cas...
Lessons Learned From Running 1800 Clusters (Brooke Jensen, Instaclustr) | Cas...Lessons Learned From Running 1800 Clusters (Brooke Jensen, Instaclustr) | Cas...
Lessons Learned From Running 1800 Clusters (Brooke Jensen, Instaclustr) | Cas...
 
Running Cassandra on Amazon EC2
Running Cassandra on Amazon EC2Running Cassandra on Amazon EC2
Running Cassandra on Amazon EC2
 
Load testing Cassandra applications
Load testing Cassandra applicationsLoad testing Cassandra applications
Load testing Cassandra applications
 
Cassandra on Mesos Across Multiple Datacenters at Uber (Abhishek Verma) | C* ...
Cassandra on Mesos Across Multiple Datacenters at Uber (Abhishek Verma) | C* ...Cassandra on Mesos Across Multiple Datacenters at Uber (Abhishek Verma) | C* ...
Cassandra on Mesos Across Multiple Datacenters at Uber (Abhishek Verma) | C* ...
 

Similar to Everyday I’m scaling... Cassandra

Five Lessons in Distributed Databases
Five Lessons  in Distributed DatabasesFive Lessons  in Distributed Databases
Five Lessons in Distributed Databasesjbellis
 
Managing Security At 1M Events a Second using Elasticsearch
Managing Security At 1M Events a Second using ElasticsearchManaging Security At 1M Events a Second using Elasticsearch
Managing Security At 1M Events a Second using ElasticsearchJoe Alex
 
Using Time Window Compaction Strategy For Time Series Workloads
Using Time Window Compaction Strategy For Time Series WorkloadsUsing Time Window Compaction Strategy For Time Series Workloads
Using Time Window Compaction Strategy For Time Series WorkloadsJeff Jirsa
 
Why does my choice of storage matter with cassandra?
Why does my choice of storage matter with cassandra?Why does my choice of storage matter with cassandra?
Why does my choice of storage matter with cassandra?Johnny Miller
 
Scaling Ceph at CERN - Ceph Day Frankfurt
Scaling Ceph at CERN - Ceph Day Frankfurt Scaling Ceph at CERN - Ceph Day Frankfurt
Scaling Ceph at CERN - Ceph Day Frankfurt Ceph Community
 
DataStax: Extreme Cassandra Optimization: The Sequel
DataStax: Extreme Cassandra Optimization: The SequelDataStax: Extreme Cassandra Optimization: The Sequel
DataStax: Extreme Cassandra Optimization: The SequelDataStax Academy
 
Cassandra Bootstap from Backups
Cassandra Bootstap from BackupsCassandra Bootstap from Backups
Cassandra Bootstap from BackupsInstaclustr
 
Cassandra Bootstrap from Backups
Cassandra Bootstrap from BackupsCassandra Bootstrap from Backups
Cassandra Bootstrap from BackupsInstaclustr
 
Strata London 2019 Scaling Impala.pptx
Strata London 2019 Scaling Impala.pptxStrata London 2019 Scaling Impala.pptx
Strata London 2019 Scaling Impala.pptxManish Maheshwari
 
CASSANDRA MEETUP - Choosing the right cloud instances for success
CASSANDRA MEETUP - Choosing the right cloud instances for successCASSANDRA MEETUP - Choosing the right cloud instances for success
CASSANDRA MEETUP - Choosing the right cloud instances for successErick Ramirez
 
DataStax Enterprise in the Field – 20160920
DataStax Enterprise in the Field – 20160920DataStax Enterprise in the Field – 20160920
DataStax Enterprise in the Field – 20160920Daniel Cohen
 
Cassandra Tuning - Above and Beyond (Matija Gobec, SmartCat) | Cassandra Summ...
Cassandra Tuning - Above and Beyond (Matija Gobec, SmartCat) | Cassandra Summ...Cassandra Tuning - Above and Beyond (Matija Gobec, SmartCat) | Cassandra Summ...
Cassandra Tuning - Above and Beyond (Matija Gobec, SmartCat) | Cassandra Summ...DataStax
 
Cassandra
CassandraCassandra
Cassandraexsuns
 
Strata London 2019 Scaling Impala
Strata London 2019 Scaling ImpalaStrata London 2019 Scaling Impala
Strata London 2019 Scaling ImpalaManish Maheshwari
 
London + Dublin Cassandra 2.0
London + Dublin Cassandra 2.0London + Dublin Cassandra 2.0
London + Dublin Cassandra 2.0jbellis
 
DatEngConf SF16 - Apache Kudu: Fast Analytics on Fast Data
DatEngConf SF16 - Apache Kudu: Fast Analytics on Fast DataDatEngConf SF16 - Apache Kudu: Fast Analytics on Fast Data
DatEngConf SF16 - Apache Kudu: Fast Analytics on Fast DataHakka Labs
 
VMworld 2013: Just Because You Could, Doesn't Mean You Should: Lessons Learne...
VMworld 2013: Just Because You Could, Doesn't Mean You Should: Lessons Learne...VMworld 2013: Just Because You Could, Doesn't Mean You Should: Lessons Learne...
VMworld 2013: Just Because You Could, Doesn't Mean You Should: Lessons Learne...VMworld
 
Apache Cassandra and The Multi-Cloud by Amanda Moran
Apache Cassandra and The Multi-Cloud by Amanda MoranApache Cassandra and The Multi-Cloud by Amanda Moran
Apache Cassandra and The Multi-Cloud by Amanda MoranData Con LA
 

Similar to Everyday I’m scaling... Cassandra (20)

Five Lessons in Distributed Databases
Five Lessons  in Distributed DatabasesFive Lessons  in Distributed Databases
Five Lessons in Distributed Databases
 
Managing Security At 1M Events a Second using Elasticsearch
Managing Security At 1M Events a Second using ElasticsearchManaging Security At 1M Events a Second using Elasticsearch
Managing Security At 1M Events a Second using Elasticsearch
 
Using Time Window Compaction Strategy For Time Series Workloads
Using Time Window Compaction Strategy For Time Series WorkloadsUsing Time Window Compaction Strategy For Time Series Workloads
Using Time Window Compaction Strategy For Time Series Workloads
 
Why does my choice of storage matter with cassandra?
Why does my choice of storage matter with cassandra?Why does my choice of storage matter with cassandra?
Why does my choice of storage matter with cassandra?
 
Scaling Ceph at CERN - Ceph Day Frankfurt
Scaling Ceph at CERN - Ceph Day Frankfurt Scaling Ceph at CERN - Ceph Day Frankfurt
Scaling Ceph at CERN - Ceph Day Frankfurt
 
DataStax: Extreme Cassandra Optimization: The Sequel
DataStax: Extreme Cassandra Optimization: The SequelDataStax: Extreme Cassandra Optimization: The Sequel
DataStax: Extreme Cassandra Optimization: The Sequel
 
Cassandra Bootstap from Backups
Cassandra Bootstap from BackupsCassandra Bootstap from Backups
Cassandra Bootstap from Backups
 
Cassandra Bootstrap from Backups
Cassandra Bootstrap from BackupsCassandra Bootstrap from Backups
Cassandra Bootstrap from Backups
 
Strata London 2019 Scaling Impala.pptx
Strata London 2019 Scaling Impala.pptxStrata London 2019 Scaling Impala.pptx
Strata London 2019 Scaling Impala.pptx
 
CASSANDRA MEETUP - Choosing the right cloud instances for success
CASSANDRA MEETUP - Choosing the right cloud instances for successCASSANDRA MEETUP - Choosing the right cloud instances for success
CASSANDRA MEETUP - Choosing the right cloud instances for success
 
DataStax Enterprise in the Field – 20160920
DataStax Enterprise in the Field – 20160920DataStax Enterprise in the Field – 20160920
DataStax Enterprise in the Field – 20160920
 
Cassandra Tuning - Above and Beyond (Matija Gobec, SmartCat) | Cassandra Summ...
Cassandra Tuning - Above and Beyond (Matija Gobec, SmartCat) | Cassandra Summ...Cassandra Tuning - Above and Beyond (Matija Gobec, SmartCat) | Cassandra Summ...
Cassandra Tuning - Above and Beyond (Matija Gobec, SmartCat) | Cassandra Summ...
 
Cassandra
CassandraCassandra
Cassandra
 
Strata London 2019 Scaling Impala
Strata London 2019 Scaling ImpalaStrata London 2019 Scaling Impala
Strata London 2019 Scaling Impala
 
BigData Developers MeetUp
BigData Developers MeetUpBigData Developers MeetUp
BigData Developers MeetUp
 
SFHUG Kudu Talk
SFHUG Kudu TalkSFHUG Kudu Talk
SFHUG Kudu Talk
 
London + Dublin Cassandra 2.0
London + Dublin Cassandra 2.0London + Dublin Cassandra 2.0
London + Dublin Cassandra 2.0
 
DatEngConf SF16 - Apache Kudu: Fast Analytics on Fast Data
DatEngConf SF16 - Apache Kudu: Fast Analytics on Fast DataDatEngConf SF16 - Apache Kudu: Fast Analytics on Fast Data
DatEngConf SF16 - Apache Kudu: Fast Analytics on Fast Data
 
VMworld 2013: Just Because You Could, Doesn't Mean You Should: Lessons Learne...
VMworld 2013: Just Because You Could, Doesn't Mean You Should: Lessons Learne...VMworld 2013: Just Because You Could, Doesn't Mean You Should: Lessons Learne...
VMworld 2013: Just Because You Could, Doesn't Mean You Should: Lessons Learne...
 
Apache Cassandra and The Multi-Cloud by Amanda Moran
Apache Cassandra and The Multi-Cloud by Amanda MoranApache Cassandra and The Multi-Cloud by Amanda Moran
Apache Cassandra and The Multi-Cloud by Amanda Moran
 

More from Instaclustr

Apache Cassandra Community Health
Apache Cassandra Community HealthApache Cassandra Community Health
Apache Cassandra Community HealthInstaclustr
 
Instaclustr introduction to managing cassandra
Instaclustr introduction to managing cassandraInstaclustr introduction to managing cassandra
Instaclustr introduction to managing cassandraInstaclustr
 
Instaclustr webinar 50,000 transactions per second with Apache Spark on Apach...
Instaclustr webinar 50,000 transactions per second with Apache Spark on Apach...Instaclustr webinar 50,000 transactions per second with Apache Spark on Apach...
Instaclustr webinar 50,000 transactions per second with Apache Spark on Apach...Instaclustr
 
Instaclustr Apache Cassandra Best Practices & Toubleshooting
Instaclustr Apache Cassandra Best Practices & ToubleshootingInstaclustr Apache Cassandra Best Practices & Toubleshooting
Instaclustr Apache Cassandra Best Practices & ToubleshootingInstaclustr
 
Processing 50,000 events per second with Cassandra and Spark
Processing 50,000 events per second with Cassandra and SparkProcessing 50,000 events per second with Cassandra and Spark
Processing 50,000 events per second with Cassandra and SparkInstaclustr
 
Load Testing Cassandra Applications
Load Testing Cassandra Applications Load Testing Cassandra Applications
Load Testing Cassandra Applications Instaclustr
 
Cassandra-as-a-Service
Cassandra-as-a-ServiceCassandra-as-a-Service
Cassandra-as-a-ServiceInstaclustr
 
Cassandra Front Lines
Cassandra Front LinesCassandra Front Lines
Cassandra Front LinesInstaclustr
 
Multi-Region Cassandra Clusters
Multi-Region Cassandra ClustersMulti-Region Cassandra Clusters
Multi-Region Cassandra ClustersInstaclustr
 
Migrating to Cassandra
Migrating to CassandraMigrating to Cassandra
Migrating to CassandraInstaclustr
 
Cassandra on Docker
Cassandra on DockerCassandra on Docker
Cassandra on DockerInstaclustr
 
Securing Cassandra
Securing CassandraSecuring Cassandra
Securing CassandraInstaclustr
 
Apache Cassandra Management
Apache Cassandra ManagementApache Cassandra Management
Apache Cassandra ManagementInstaclustr
 
Apache Cassandra in the Cloud
Apache Cassandra in the CloudApache Cassandra in the Cloud
Apache Cassandra in the CloudInstaclustr
 
Introduction to Apache Cassandra
Introduction to Apache CassandraIntroduction to Apache Cassandra
Introduction to Apache CassandraInstaclustr
 
Development Nirvana with Cassandra
Development Nirvana with CassandraDevelopment Nirvana with Cassandra
Development Nirvana with CassandraInstaclustr
 

More from Instaclustr (16)

Apache Cassandra Community Health
Apache Cassandra Community HealthApache Cassandra Community Health
Apache Cassandra Community Health
 
Instaclustr introduction to managing cassandra
Instaclustr introduction to managing cassandraInstaclustr introduction to managing cassandra
Instaclustr introduction to managing cassandra
 
Instaclustr webinar 50,000 transactions per second with Apache Spark on Apach...
Instaclustr webinar 50,000 transactions per second with Apache Spark on Apach...Instaclustr webinar 50,000 transactions per second with Apache Spark on Apach...
Instaclustr webinar 50,000 transactions per second with Apache Spark on Apach...
 
Instaclustr Apache Cassandra Best Practices & Toubleshooting
Instaclustr Apache Cassandra Best Practices & ToubleshootingInstaclustr Apache Cassandra Best Practices & Toubleshooting
Instaclustr Apache Cassandra Best Practices & Toubleshooting
 
Processing 50,000 events per second with Cassandra and Spark
Processing 50,000 events per second with Cassandra and SparkProcessing 50,000 events per second with Cassandra and Spark
Processing 50,000 events per second with Cassandra and Spark
 
Load Testing Cassandra Applications
Load Testing Cassandra Applications Load Testing Cassandra Applications
Load Testing Cassandra Applications
 
Cassandra-as-a-Service
Cassandra-as-a-ServiceCassandra-as-a-Service
Cassandra-as-a-Service
 
Cassandra Front Lines
Cassandra Front LinesCassandra Front Lines
Cassandra Front Lines
 
Multi-Region Cassandra Clusters
Multi-Region Cassandra ClustersMulti-Region Cassandra Clusters
Multi-Region Cassandra Clusters
 
Migrating to Cassandra
Migrating to CassandraMigrating to Cassandra
Migrating to Cassandra
 
Cassandra on Docker
Cassandra on DockerCassandra on Docker
Cassandra on Docker
 
Securing Cassandra
Securing CassandraSecuring Cassandra
Securing Cassandra
 
Apache Cassandra Management
Apache Cassandra ManagementApache Cassandra Management
Apache Cassandra Management
 
Apache Cassandra in the Cloud
Apache Cassandra in the CloudApache Cassandra in the Cloud
Apache Cassandra in the Cloud
 
Introduction to Apache Cassandra
Introduction to Apache CassandraIntroduction to Apache Cassandra
Introduction to Apache Cassandra
 
Development Nirvana with Cassandra
Development Nirvana with CassandraDevelopment Nirvana with Cassandra
Development Nirvana with Cassandra
 

Recently uploaded

What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....kzayra69
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
How to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfHow to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfLivetecs LLC
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noidabntitsolutionsrishis
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 

Recently uploaded (20)

What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
How to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfHow to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdf
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 

Everyday I’m scaling... Cassandra

  • 2. 2© DataStax, All Rights Reserved.
  • 3. Who am I and What do I do? • Co-founder and CTO of Instaclustr -> www.instaclustr.com • Instaclustr provides Cassandra-as-a-Service in the cloud. • Currently support AWS, Azure, Heroku, Softlayer and Private DCs with more to come. • Approaching 1000 nodes under management • Yes… we are hiring! Come live in Australia! © DataStax, All Rights Reserved. 3
  • 4. 1 Why scaling sucks in Cassandra 2 It gets better 3 Then it gets really awesome 4© DataStax, All Rights Reserved.
  • 5. Linear Scalability – In theory © DataStax, All Rights Reserved. 5
  • 6. Linear Scalability – In practice © DataStax, All Rights Reserved. 6
  • 7. What’s supposed to happen • Scaling Cassandra is just “bootstrap new nodes” • That works if your cluster is under provisioned and has 30% disk usage © DataStax, All Rights Reserved. 7
  • 8. What actually happens • Add 1 node • Bootstrapping node fails (1 day) • WTF - Full disk on bootstrapping node? (5 minutes) • If STCS run SSTableSplit on large SSTables on original nodes (2 days) • Attach super sized network storage (EBS) and bind mount to bootstrapping node. © DataStax, All Rights Reserved. 8
  • 9. What actually happens • Restart bootstrapping process • Disk alert 70% (2 days later) • Throttle streaming throughput to below compaction throughput • Bootstrapping finishes (5 days later) • Cluster latency spikes cause bootstrap finished but their was a million compactions remaining • Take node offline and let compaction finish • Run repair on node (10 years) • Add next node. © DataStax, All Rights Reserved. 9
  • 10. What actually happens © DataStax, All Rights Reserved. 10
  • 11. Scalability in Cassandra sucks • Soo much over streaming • LCS and Bootstrap – Over stream then compact all the data! • STCS and bootstrap – Over stream all the data and run out of disk space © DataStax, All Rights Reserved. 11
  • 12. Scalability in Cassandra sucks • No vnodes? – Can only double your cluster • Vnodes? – Can only add one node at a time • Bootstrap – Fragile and not guaranteed to be consistent © DataStax, All Rights Reserved. 12
  • 13. Why does it suck for you Your database never meets your business requirements from a capacity perspective (bad) and if you try… • You could interrupt availability and performance (really bad) • You could loose data (really really bad) © DataStax, All Rights Reserved. 13
  • 14. How did it get this way? It’s actually a hard problem: • Moving large amounts of data between nodes requires just as much attention to it from a CAP perspective as client facing stuff. • New features don’t tend to consider impact on scaling operations • Features that help ops tends to be less sexy © DataStax, All Rights Reserved. 14
  • 15. Does it get better? © DataStax, All Rights Reserved. 15 Yes!
  • 16. Does it get better? Consistent bootstrap Strongly consistent membership and ownership – CASSANDRA-9667 • Using LWT to propose and claim ownership of new token allocations in a consistent manner • Work in progress • You can do this today by pre-assigning non-overlapping (inc replicas) vnode tokens and using cassandra.consistent.simultaneousmoves.allow=true as a JVM property before bootstrapping your nodes © DataStax, All Rights Reserved. 16
  • 17. Does it get better? Bootstrap stability Keep-alives for all streaming operations – CASSANDRA-11841 • Currently implements a timeout, you can reduce this to be more aggressive, but large SSTables will then never stream Resummable bootstrap – CASSANDRA-8942 & CASSANDRA-8838 • You can do this in 2.2+ Incremental bootstrap – CASSANDRA-8494 • Being worked on, hard to do with vnodes right now (try it… the error message uses the word “thusly”), instead throttle streaming and uncap compaction to ensure the node doesn’t get overloaded during bootstrap © DataStax, All Rights Reserved. 17
  • 18. Can we make it even better? © DataStax, All Rights Reserved. 18 Yes!
  • 19. Can we make it even better? © DataStax, All Rights Reserved. 19 • Let’s try scaling without data ownership changes • Take advantage of Cassandras normal partition and availability mechanisms • With a little help from our cloud providers!
  • 20. Introducing token pinned scaling © DataStax, All Rights Reserved. 20 • Probably needs a better name • Here is how it works
  • 21. Introducing token pinned scaling © DataStax, All Rights Reserved. 21 With the introduction of: • Partitioning SSTables by Range (CASSANDRA-6696) • Range Aware Compaction (CASSANDRA-10540) • A few extra lines of code to save/load a map of token to disks (coming soon) Cassandra will now keep data associated with specific tokens in a single data directory, this could let us treat a disk as a unit in which to scale around! But first what do these two features actually let us do?
  • 22. Introducing token pinned scaling © DataStax, All Rights Reserved. 22 Before Partitioning SSTables by Range and Range Aware Compaction: 1 - 100 901 - 1000 1401-1500 Disk0 Disk1 SSTables
  • 23. Introducing token pinned scaling © DataStax, All Rights Reserved. 23 After Partitioning SSTables by Range and Range Aware Compaction: 1 - 100 901 - 1000 1401-1500 Disk0 Disk1 SSTables Data within a token range is now kept on a specific disk
  • 24. Introducing token pinned scaling © DataStax, All Rights Reserved. 24 Your SSTables will converge to contain a single vnode range when things get big enough 1 - 100 901 - 1000 1401-1500 Disk0 Disk1 SSTables
  • 25. Leveraging EBS to separate I/O from CPU © DataStax, All Rights Reserved. 25 • Amazon Web Services provides a networked attached block store called EBS (Elastic Block Store). • Isolated to each availability zone • We can attach and reattach EBS disk ad-hoc and in seconds/minutes
  • 26. Adding it all together © DataStax, All Rights Reserved. 26 • Make each EBS disk a data directory in Cassandra • Cassandra guarantees only data from a specific token range will exist on a given disk • When throughput is low attach all disks in a single AZ to a single node, specify all the ranges from each disk via a comma separated list of tokens. • Up to 40 disks per instance! • When load is high, launch more instances and spread the disks across the new instances.
  • 27. Adding it all together © DataStax, All Rights Reserved. 27 • Make each EBS disk a data directory in Cassandra sda sdd sdb sde sdc sdf Amazon EBS
  • 28. Adding it all together © DataStax, All Rights Reserved. 28 • Cassandra guarantees only data from a specific token range will exist on a given disk Amazon EBS
  • 29. Adding it all together © DataStax, All Rights Reserved. 29 • When throughput is low attach all disks in a single AZ to a single node Amazon EBS 200 op/s
  • 30. Adding it all together © DataStax, All Rights Reserved. 30 • When load is high, launch more instances and spread the disks across the new instances. Amazon EBS 10,000 op/s
  • 31. How it works - Scaling © DataStax, All Rights Reserved. 31 • Normally you have to provision your cluster at your maximum operations per second + 30% (headroom in case your get it wrong). • Provision enough IOPS, CPU, RAM etc • Makes Cassandra an $$$ solution Provisioned workload Actual workload
  • 32. © DataStax, All Rights Reserved. 32
  • 33. How it works - Scaling © DataStax, All Rights Reserved. 33 • Let’s make our resources match our workload Provisioned IOPS workload Actual workload Provisioned CPU & RAM workload
  • 34. How it works - Scaling © DataStax, All Rights Reserved. 34 • Let’s make our resources match our workload Provisioned IOPS workload Actual workload Provisioned CPU & RAM workload
  • 35. How it works - Consistency © DataStax, All Rights Reserved. 35 • No range movements! You don’t need a Jepsen test to see how bad range movements are for consistency. • Tokens and ranges are fixed during all scaling operations • Range movements are where you see most consistency badness in Cassandra (bootstrap, node replacement, decommission) and need to rely on repair.
  • 36. How it works - Consistency © DataStax, All Rights Reserved. 36 • Treats Racks as a giant “meta-node”, network topology strategy ensures replicas are on different racks. • AWS Rack == AZ • As tokens for a node change based on the disk they have, replica topology stays the same • You can only swap disks between instances within the same AZ • Scale one rack at a time… scale your cluster in constant time! • If you want to do this with a single rack, you will have a bad time
  • 37. How it works - Consistency © DataStax, All Rights Reserved. 37 1,5,10 2,6,11 3, 22, 44 4,23,45 102,134,167 101,122,155 1,2,3,4,5,6,10,11,22,23,44,45,101 …
  • 38. How it works - Consistency © DataStax, All Rights Reserved. 38 1,5,10 2,6,11 3, 22, 44 4,23,45 102,134,167 101,122,155 1,5,10 2,6,11 3,22,44 4,23,45 102,134,167 101,122,155
  • 39. How it works - TODO © DataStax, All Rights Reserved. 39 Some issues remain: • Hinted handoff breaks (handoff is based on endpoint rather than token) • Time for gossip to settle on any decent sized cluster • Currently just clearing out the system.local folder to allow booting • Can’t do this while repair is running… for some people this is all the time • You’ll need to run repair more often as scaling intentionally introduces outages • Breaks consistency and everything where RF > number of racks (usually the system_auth keyspace). • More work needed!
  • 40. How it works – Real world © DataStax, All Rights Reserved. 40 • No production tests yet  • Have gone from a 3 node cluster to a 36 node cluster in around 50 minutes. • Plenty left to optimize (e.g. bake everything into an AMI to reduce startup time) • Could get this down to 10 minutes per rack depending on how responsive AWS is! • No performance overhead compared to Cassandra on EBS. • Check out the code here: https://github.com/benbromhead/Cassandra/tree/ic-token- pinning
  • 41. How it works – Real world © DataStax, All Rights Reserved. 41 • Really this is bending some new and impending changes to do funky stuff 