Learning Objectives for Administrator Training with Cassandra

  • 1. Introduction to Operations

  • 2. The write path
    • 2.1 Understand what the coordinator role is.
    • 2.2 Understand what the Data role of a node is
    • 2.3 Describe what a MemTable is
    • 2.4 Describe what the commit log is
    • 2.5 Explain how durability is achieved in Cassandra
    • 2.6 Define what a successful write is within Cassandra
    • 2.7 Understand what could cause a write failure in Cassandra
    • 2.8 Understand how Cassandra recovers writes via the commit log
    • 2.9 Identify the different methods available in Cassandra to monitor writes
    • 2.10 Identify the different issues that can cause writes to be slow or fail
    • 2.11 Understand how concurrent reads and writes can affect each other


  • 3. The read path
    • 3.1 Describe the sequence of the read path
    • 3.2 Understand the role of the read cache in a read operation
    • 3.3 Understand the role of the key cache in a read operation
    • 3.4 What are bloom filters and how do they improve read performance?
    • 3.5 Understand the role of the primary index in a read operation
    • 3.6 Identify the various components that Cassandra uses when reading columns versus an entire row
    • 3.7 Identify the causes of slow reads or a read failure


  • 4. Ring management
    • 4.1 Describe how repair works
    • 4.2 Describe what decommission does
    • 4.3 Describe what Remove Token does
    • 4.4 Understand how to recover a downed node in your cluster
    • 4.5 What is bootstrapping and how does it work?
    • 4.6 Describe what a seed node is
    • 4.7 How many seeds should a cluster have?
    • 4.8 Understand how to set up a multi-datacenter cluster


  • 5. Packaging for Cassandra
    • 5.1 Understand the different Cassandra distributions
    • 5.2 How is Cassandra packaged from Apache?
    • 5.3 Differentiate between the different DataStax distributions
    • 5.4 How are the DataStax distributions shipped?
    • 5.5 Where can I download the DataStax distributions?
    • 5.6 What is in the DataStax community distribution?
    • 5.7 What is in the DataStax Enterprise distributions?


  • 6. Tuning
    • 6.1 Understand Effective methods of tuning Cassandra
    • 6.2 Understand how the row cache works
    • 6.3 Understand when and when not to use the row cache
    • 6.4 Tune the row cache
    • 6.5 How do I monitor the row cache?
    • 6.6 Understand how the key cache works
    • 6.7 Tune the Key cache
    • 6.8 How can I properly estimate the size of my cache(s)
    • 6.9 How to tune for database performance through data modeling
    • 6.10 Identify Hardware and OS causes of performance issues
    • 6.11 Determine the appropriate heap size for my Cassandra instance
    • 6.12 Understand the different methods of tuning for write performance
    • 6.13 Understand how to tune for better garbage collection
    • 6.14 Understand how to tune for better compaction performance


  • 7. The system Keyspace
    • 7.1 Identify the different components of the system Keyspace
    • 7.2 What can I find in the index info?
    • 7.3 Identify the different items that can be found in the location info
    • 7.4 Understand what schema migrations are and where to view the data
    • 7.5 Locate hint information from the current node
    • 7.6 Locate version information from the system Keyspace
    • 7.7 How do I manage the system Keyspace if problems occur?


  • 8. Managing data
    • 8.1 Understand and identify the various components of the Cassandra data structure
    • 8.2 Establish data directory location(s)
    • 8.3 How do Keyspaces fit into the data structure?
    • 8.4 How do Column Families fit into the data structure?
    • 8.5 Identify the Column Family filename structure
    • 8.6 Understand what information is held within a Column Family data file
    • 8.7 Understand what a snapshot id
    • 8.8 Create and locate snapshots within the Cassandra system


  • 9. Sizing
    • 9.1 Determine how to properly size my Cassandra cluster
    • 9.2 How much memory should I give to Java?
    • 9.3 What type of CPU should I use?
    • 9.4 Determine the optimal disk configuration for the nodes in my Cassandra cluster
    • 9.5 Choose the proper disk type for the commit log and data directories
    • 9.6 Understand how different compaction strategies effect disk sizing requirements
    • 9.7 Determine disk capacity requirements for my Cassandra node
    • 9.8 How big can I/should I go for my per node capacity?
    • 9.9 Are SSDs good for a Cassandra node?
    • 9.10 Understand concerns when using the cloud for a Cassandra cluster


  • 10. Troubleshooting
    • 10.1 Understand how to troubleshoot different issues with Cassandra
    • 10.2 Identify the different issues that can cause data corruption in Cassandra
    • 10.3 Understand the indicators for data corruption
    • 10.4 List the various steps and methods to manually fix corruption issues
    • 10.5 Understand what can cause schema problems
    • 10.6 Understand how to fix schema migration problems
    • 10.7 Identify the different causes of IO problems


  • 11. Monitoring
    • 11.1 Describe what OpsCenter is and how it operates
    • 11.2 What can be monitored with OpsCenter?
    • 11.3 How does OpsCenter monitor a cluster?
    • 11.4 Describe how to monitor a cluster with nodetool
    • 11.5 Describe how to monitor a cluster using JConsole
    • 11.6 What can I monitor with JConsole?
    • 11.7 How do I navigate the JConsole UI?
    • 11.8 Describe what the different compaction metrics are
    • 11.9 Describe the thread pool monitoring options
    • 11.10 Understand how to monitor Read and Write latency in JConsole
    • 11.11 Understand how to monitor and adjust your cache(s) in JConsole


  • 12. Compaction
    • 12.1 Describe what compaction is and why it is necessary
    • 12.2 Understand legacy forms of compaction if using older version of Cassandra
    • 12.3 Describe the compaction process in general
    • 12.4 Understand what size tiered compaction is and how it operates
    • 12.5 Describe the drawbacks to the size tiered strategy
    • 12.6 Understand what level compaction is and how it operates
    • 12.7 Describe the different levels of the level compaction process and how they relate
    • 12.8 Discuss the benefits and drawbacks of the level compaction process
    • 12.9 Describe what cleanup does
    • 12.10 Describe what SSTableRebuild does
    • 12.11 Describe what SSTableUpdate does
    • 12.12 Describe secondary index compactions
    • 12.13 Describe what nodetool scrub does
    • 12.14 Describe what a validation compaction is
    • 12.15 Describe when caches are saved
    • 12.16 Describe how to tune compaction in the JVM, and in YAML


  • 13. Tombstones
    • 13.1 Understand how tombstones work and why they are necessary
    • 13.2 Understand deletes in a distributed system
    • 13.3 Understand how a tombstone works
    • 13.4 How is a tombstone created, and what is eviction?
    • 13.5 Name the different components of a row that can receive a tombstone
    • 13.6 Understand how tombstones are removed from the system
    • 13.7 Identify which methods of tombstone removal are better


  • 14. Failure
    • 14.1 Identify the different types of failure that can occur in a distributed system
    • 14.2 Understand the effects of failure on the Cassandra system
    • 14.3 Understand the consequences of a node failure and how to protect against
    • 14.4 Identify the various methods of addressing node failure
    • 14.5 Identify the causes of a partial node failure
    • 14.6 Understand the various causes of network failure
    • 14.7 What are the causes and effects of a network partition?
    • 14.8 Understand how to fix a network partition error