Generally available Kudu
I talked with Cloudera about Kudu in early May. Besides giving me a lot of information about Kudu, Cloudera also helped confirm some trends I’m seeing elsewhere, including:
- Security is an ever bigger deal.
- There’s a lot of interest in data warehouses (perhaps really data marts) that are updated in human real-time.
- Prospects for that respond well to the actual term “data warehouse”, at least when preceded by some modifier to suggest that it’s modern/low-latency/non-batch or whatever.
- Flash is often — but not yet always — preferred over disk for that kind of use.
- Sometimes these data stores are greenfield. When they’re migrations, they come more commonly from analytic RDBMS or data warehouse appliance (the most commonly mentioned ones are Teradata, Netezza and Vertica, but that’s perhaps just due to those product lines’ market share), rather than from general purpose DBMS such as Oracle or SQL Server.
- Intel is making it ever easier to vectorize CPU operations, and analytic data managers are increasingly taking advantage of this possibility.
Now let’s talk about Kudu itself. As I discussed at length in September 2015, Kudu is:
- A data storage system introduced by Cloudera (and subsequently open-sourced).
- Columnar.
- Updatable in human real-time.
- Meant to serve as the data storage tier for Impala and Spark.
Kudu’s adoption and roll-out story starts:
- Kudu went to general availability on January 31. I gather this spawned an uptick in trial activity.
- A subsequent release with some basic security features spawned another uptick.
- I don’t think Cloudera will mind my saying that there are many hundreds of active Kudu clusters.
- But Cloudera believes that, this soon after GA, very few Kudu users are in actual production.
Early Kudu interest is focused on 2-3 kinds of use case. The biggest is the kind of “data warehousing” highlighted above. Cloudera characterizes the others by the kinds of data stored, specifically the overlapping categories of time series — including financial trading — and machine-generated data. A lot of early Kudu use is with Spark, even ahead of (or in conjunction with) Impala. A small amount has no relational front-end at all.
Other notes on Kudu include:
- Solid-state storage is recommended, with a few terabytes per node.
- You can also use spinning disk. If you do, your write-ahead logs can still go to flash.
- Cloudera said Kudu compression ratios can be as low as 2-5X, or as high as 10-20X. With that broad a range, I didn’t drill down into specifics of what they meant.
- There seem to be a number of Kudu clusters with 50+ nodes each. By way of contrast, a “typical” Cloudera customer has 100s of nodes overall.
- As you might imagine from their newness, Kudu security features — Kerberos-based — are at the database level rather than anything more granular.
And finally, the Cloudera folks woke me up to some issues around streaming data ingest. If you stream data in, there will be retries resulting in duplicate delivery. So your system needs to deal with those one way or another. Kudu’s way is:
- Primary keys will be unique. (Note: This is not obvious in a system that isn’t an entire RDBMS in itself.)
- You can configure the uniqueness to be guaranteed either through an upsert mechanism or just by simply rejecting duplicates.
- Alternatively, you can write code to handle duplication errors, e.g. via Spark.
Comments
One Response to “Generally available Kudu”
Leave a Reply
[…] quote is from a recent post about Kudu, […]