BENCHMARKING APACHE CASSANDRA WITH TLP-STRESS

This post will introduce you to tlp-stress, a tool for benchmarking Apache Cassandra. I started tlp-stress back when I was working at The Last Pickle. At the time, I was spending a lot of time helping teams identify the root cause of performance issues and needed a way of benchmarking. I found cassandra-stress to be difficult to use and configure, so I ended up writing my own tool that worked in a manner that I found to be more useful.

BACK TO CONSULTING!

Saying “it’s been a while since I wrote anything here” would be an understatement, but I’m back, with a lot to talk about in the upcoming months. First off - if you’re not aware, I continued writing, but on The Last Pickle blog. There’s quite a few posts there, here are the most interesting ones: 14 Things To Do When Setting Up a New Cassandra Cluster Apache Cassandra Performance Tuning - Compression with Mixed Workloads Garbage Collection Tuning for Apache Cassandra Analyzing Cassandra Performance with Flame Graphs Cassandra Time Series Data Modeling For Massive Scale Now the fun part - I’ve spent the last 3 years at Apple, then Netflix, neither of which gave me much time to continue my writing.

A SMALL UTILITY TO HELP WITH EXTRACTING CODE SNIPPETS

It’s been a while since I’ve written anything here. Part of the reason has been due to the writing I’ve done over on the blog at The Last Pickle. In the lsat few years, I’ve written about our tlp-stress tool, tips for new Cassandra clusters, and a variety of performance posts related to Compaction, Compression, and GC Tuning. The other reason is the eight blog posts I’ve got in the draft folder.

ENABLING KOTLIN 1.3'S SUPPORT FOR RETURNING RESULT IN STANDARD LIBRARY

Kotlin 1.3 was released recently. There’s a number of interesting changes. Coroutines have graduated from experimental, contracts, and inline classes have been useful in my own work so far. You can read about the changes on the Kotlin website There’s another feature I find very useful: the new Result type. I first used the Result Monad in Rust. I don’t write much Rust anymore, but I definitely appreciate the patterns that came from functional programming.

LVM BY EXAMPLE

In this post I’ll be discussing the fundamentals of the Logical Volume Manager in Linux, usually simply referred to as LVM. I’ve used LVM occasionally over the years, but for the most part I would just create a single big partition on my disk, toss XFS on it and call it a day. Recently that changed when I decided to replace my aging home media server with a new beast of a box that I wanted to do a lot more than simply serve up content.

ACCESSING PRIVATE VARIABLES IN THE JVM

In this I’ll discuss a uncommonly used but useful technique of accessing variables and methods which have been declared as private in the JVM, using the Apache Commons Lang library to work around the restriction. The description from the project page reads: The standard Java libraries fail to provide enough methods for manipulation of its core classes. Apache Commons Lang provides these extra methods. A couple weeks ago I was working on a project that required parsing some CQL statements.

MIGRATION TO HUGO

After almost five years of using Pelican as my static site generator, I’ve migrated to the Hugo tool. While I enjoyed Pelican and it’s flexibility, it’s performance started to bother me when building a site from scratch. Depending on what else was running on my laptop, a full build could take 15-20 seconds. This isn’t the end of the world, but in comparison Hugo takes less than 100 milliseconds. If it was simply a matter of build time, I may not have really cared that much, but I’ve been using Hugo to build the site and documentation for Reaper, the open source repair tool we maintain at The Last Pickle.

WORKING WITH GRPC, KOTLIN AND GRADLE

Edit: The source code for this post is located on GitHub Sometimes when I travel I end up trying to learn something completely new. For a while I was playing with Rust, Capn Proto, Scala, or I’d start a throwaway project at an airport and just tinker. My passion is and has always been databases. I’ve maintained this blog for roughly a decade, starting with MySQL for the first part of my career but moving to Apache Cassandra several years ago, and am now a committer and member of the PMC.

I AM STILL WRITING!

If you were to take a look at my blog, you’d think I’d flipped a table and left the tech industry. Not the case at all. I’m still writing, but less frequently, and on the TLP blog. I intend to start writing here again, but the material will likely focus around topics other than Cassandra, since I’m already writing about it elsewhere. Here are the posts I’ve authored in the last 6 months or so:

INSTACLUSTR NOW SUPPORTING APACHE CASSANDRA 3.7 AS LTS

Instacluster announced on the Apache Cassandra user list that they are making their supported branch of the Cassandra 3.7 tick tock release publicly available (see GitHub repo). Bug fixes that go into 3.8, 3.9, etc will be back ported to the Instacluster LTS. You can read the blog post about the decision. Some people I’ve talked to are concerned about having different commercial entities doing long term supported releases, and this concern is understandable.