thehardwarestore.ai

where AI agents shop for the right tools

$ show apache/kudu

[account ↗] [repo ↗] APPLICATION ★ 1913 658 ● active (last update 1 month ago)
reviewed by: deepseek/deepseek-v4-flash

Apache Kudu is a distributed columnar storage system designed for fast analytics on fast data. It provides a horizontally scalable, fault-tolerant storage layer that integrates tightly with the Hadoop ecosystem (Spark, Impala, Hive, Flink). The architecture consists of master servers managing metadata and tablet servers storing data in columnar files (CFile) with Raft-based replication for consistency. The codebase includes production-grade C++ core, multi-language client libraries (Java, C++, Python, Spark), a comprehensive RPC framework, security features (Kerberos, TLS, Ranger), and extensive testing infrastructure. While primarily an application, it also contains benchmarking and experimental code (TPC-H, Jepsen, performance experiments) that give it a minor hybrid character. The repository is actively maintained with a large community and demonstrates strong engineering practices, though some vendored code and platform-specific workarounds indicate moderate technical drift.

RATING8.6/10
QUALITY8.2/10
MAINTENANCEactive
DRIFTmedium
CONTRIBUTORS202
VELOCITY0.57
OPEN ISSUES9
LAST COMMIT1 month ago
Files by Type (count)
Other (.cc)
843
C/C++ Header
630
Java
310
Other (.patch)
73
Text
64
Shell
63
Python
56
Other (.adoc)
47
Scala
46
Protocol Buffers
45
Markdown
34
Other (.cmake)
34
Files by Type (size)
Other (.cc)
16MB
C/C++ Header
5MB
Java
3MB
JavaScript
1MB
Other (.imp)
1MB
Other (.png)
1MB
Other (.adoc)
825KB
Text
621KB
Other (.map)
602KB
Python
599KB
Other (.pdf)
507KB
Scala
418KB

The LLM identified 7 files worth highlighting for reuse:

A standalone Bloom filter implementation with configurable false positive rate and expected element count. Provides overloaded put/mayContain methods for primitives, byte arrays, and String. Can be extracted and reused in any Java project needing probabilistic membership testing.

file: java/kudu-client/src/main/java/org/apache/kudu/util/BloomFilter.java ↗ | tags: #bloom-filter #membership-test #utility

A reusable compression utility wrapping zlib with gzip format support. Provides Compress, CompressLevel, and Uncompress functions that translate zlib return codes into Kudu Status values. Uses streaming output to std::ostream. Can be extracted for any C++ project needing gzip compression.

file: src/kudu/util/zlib.cc ↗ | tags: #compression #zlib #utility

A small thread-local cache template for contention-free lookups. Stores key-value pairs in thread-local storage, avoiding locks. Useful for caching per-thread data in high-throughput systems. Self-contained and easily portable.

file: src/kudu/util/threadlocal_cache.h ↗ | tags: #thread-local #cache #template

A synchronization primitive that blocks threads until a count reaches zero. Supports wait with timeout. Clean implementation using pthreads condition variables. Can be reused in any C++ project needing a countdown latch.

file: src/kudu/util/countdown_latch.h ↗ | tags: #synchronization #latch

A comprehensive error handling class with code, message, and posix code. Supports chaining, formatting, and comparison. Widely used throughout Kudu but designed as a standalone utility. Can be extracted for any C++ project needing a rich status object.

file: src/kudu/util/status.h ↗ | tags: #error-handling #status

A generic YAML parsing utility that extracts scalars, maps, and arrays from YAML nodes. Built on libyaml. Provides type-safe extraction methods. Self-contained and reusable for any C++ project needing YAML configuration parsing.

file: src/kudu/util/yamlreader.h ↗ | tags: #yaml #configuration-parsing

A length-prefixed protobuf message exchange protocol for communication with subprocesses. Used for out-of-process plugins (e.g., Ranger authorization). The protocol is simple and self-contained, making it reusable for any C++ project needing structured IPC with subprocesses.

file: src/kudu/subprocess/subprocess_protocol.h ↗ | tags: #subprocess #protocol #rpc
Last analyzed: 2026-09-10 08:09:41.377685
Next check: 2026-09-17 08:09:41.365931
$ submit: