Benchmark
The Riffle repository reports a TeraSort comparison using a 273 GB compressed dataset. The numbers below retain the original environment and configuration context.
Environment
| Type | Description |
|---|---|
| Software | Uniffle 0.8.0, Hadoop 3.2.2, Spark 3.1.2 |
| Machine | 96 cores, 512 GB memory, 4 × 1 TB SATA SSD, 8 GB/s network |
| Hadoop YARN cluster | 1 ResourceManager + 40 NodeManagers |
| Uniffle cluster | 1 coordinator + 1 shuffle server |
Spark configuration
spark.executor.instances=400
spark.executor.cores=1
spark.executor.memory=2g
spark.shuffle.manager=org.apache.spark.shuffle.RssShuffleManager
spark.rss.storage.type=MEMORY_LOCALFILE
TeraSort result
Each bar shows total runtime, split into shuffle write and shuffle read time. Lower is better.
Vanilla Spark ESS
4.2 min
—
Riffle gRPC 10 GB
4.0 min
−4.8%
Riffle gRPC 300 GB
3.5 min
−16.7%
Riffle uRPC 10 GB
3.8 min
−9.5%
Riffle uRPC
3.2 min
−23.8%
Uniffle gRPC 10 GB
4.0 min
−4.8%
Uniffle gRPC 300 GB
8.6 min
+104.8%
Uniffle Netty, default allocator 10 GB
5.1 min
+21.4%
Uniffle Netty, jemalloc 10 GB
4.5 min
+7.1%
Uniffle Netty, default allocator 300 GB
4.0 min
−4.8%
Uniffle Netty, jemalloc 300 GB
6.6 min
+57.1%
The Riffle uRPC protocol is named NETTY on the Java side.
These figures are project-reported measurements, not a guarantee for another cluster. Compare with the same Spark version, data shape, network, disks, storage capacity, and concurrency before drawing conclusions.
See the source README for the original report.