Apache Kudu is an open source storage engine for structured data that is part of the Apache Hadoop ecosystem. The primary intention of Kudu is to allow applications to perform fast big data analytics on rapidly changing data. It was designed for fast performance for OLAP queries.[05][06]
- Website
- https://kudu.apache.org[01]
- Source Code
- https://github.com/apache/kudu[02]
- Tech Docs
- https://kudu.apache.org/docs[03]
- Developer
- Country of Origin
- US
- Start Year
- 2016 [04]
- Project Type
- Open Source
- Written in
- C++
- Derived From
- HBase
- Inspired By
- Calvin
- Compatible With
- Spark SQL
- Operating System
- Linux
- License
- Apache v2
Being a part of the Hadoop ecosystem, Kudu supports the use of Apache data processing frameworks like Spark, Impala or MapReduce on its tables. Kudu tables can also be joined with other Hadoop storage engines like HBase and HDFS. To build a Kudu application developers can use the Java, C++ or Python Kudu APIs that support No-SQL style accesses or SQL style frameworks like Apache Impala.
Apache Kudu is an open source storage engine for structured data that is part of the Apache Hadoop ecosystem. The primary intention of Kudu is to allow applications to perform fast big data analytics on rapidly changing data. It was designed for fast performance for OLAP queries. Being a part of the Hadoop ecosystem, Kudu supports the use of Apache data processing frameworks like Spark, Impala or MapReduce on its tables. Kudu tables can also be joined with other Hadoop storage engines like HBase and HDFS. To build a Kudu application developers can use the Java, C++ or Python Kudu APIs that support No-SQL style accesses or SQL style frameworks like Apache Impala.[05][06]
History[07]
Prior to Kudu, most data storage engines were able to store one type of structured data, static or mutable. Storage engines for static data were unable to make changes to individual records while storage engines for mutable data had a low throughput for sequential reads. Because of this developers typically used two different storage engines for first mutating their data and then performing analytics. Apache Kudu was designed to support both data formats and provide both high throughput sequential-access and random-access queries. Kudu was developed as internal project at Cloudera and become open to the public in September 2016.
Compression[08]
Each column in a Kudu table can be encoded in certain ways based on the type of that column. By default, bit packing is used for various int, double and float column types, run-length encoding is used for bool column types and dictionary-encoding for string or binary column types. By default Kudu doesn't compress columns but it supports per-column compression using LZ4, Snappy or zlib compression codecs.
Concurrency Control[09][10]
Kudu employs MVCC. Kudu uses an optimistic concurrency model in which readers don't block writers and writes don't block readers. As a result less lock acquisitions are needed during large table scans.
Data Model[08]
Kudu is a relational database. Unlike traditional relation databases, Kudu also utilizes partitioning data into tablets that are stored on individual servers. All rows within a tablet are ordered by a primary key.
Indexes[12][11]
Currently Kudu does not support any additional indexes (aside from the primary index). As an alternative Kudu provides the capability to partition hash or range partition the data for quicker access.
Storage Architecture[11]
Although, an experimental version of Kudu does rely on persistent memory in a blocked cache, Kudu is primarily disk-oriented.
Citations
12 sources- Apache Kudu - Fast Analytics on Fast Data apache.org
- GitHub - apache/kudu: Mirror of Apache Kudu · GitHub github.com
- https://kudu.apache.org/docs apache.org
- Apache Kudu - Wikipedia wikipedia.org
- Apache Kudu - Using Apache Kudu with Apache Impala apache.org
- Apache Kudu - Overview apache.org
- https://kudu.apache.org/kudu.pdf apache.org
- https://kudu.apache.org/docs/schema_design.html#encoding apache.org
- Apache Kudu - Transaction Semantics in Apache Kudu apache.org
- Next-Generation Big Data: A Practical Guide to Apache Kudu, Impala, and Spark - Butch Quinto - Google Books google.com
- Apache Kudu - Kudu FAQ apache.org
- Apache Kudu - Apache Kudu Schema Design apache.org