Performance Tuning
Memory
# celeborn-env.sh
export CELEBORN_MASTER_MEMORY=4g
export CELEBORN_WORKER_MEMORY=2g
export CELEBORN_WORKER_OFFHEAP_MEMORY=8g
# JVM GC tuning
export CELEBORN_MASTER_JAVA_OPTS="-XX:+UseG1GC -XX:MaxGCPauseMillis=200"
export CELEBORN_WORKER_JAVA_OPTS="-XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:MaxDirectMemorySize=8g"
Buffer Tuning
celeborn.worker.flusher.buffer.size=256k # Local disk
celeborn.worker.flusher.hdfs.buffer.size=4m # HDFS (must be >= 4 MB)
celeborn.worker.flusher.s3.buffer.size=6m # S3
Threading
# Partition sorting and commit (increase for HDFS/S3)
celeborn.worker.sortPartition.threads=64
celeborn.worker.commitFiles.threads=128
# Network and RPC
celeborn.data.io.threads=32
celeborn.rpc.dispatcher.numThreads=32
Network
# High throughput: increase connections per peer
celeborn.data.io.numConnectionsPerPeer=16
celeborn.client.push.maxReqsInFlight=128
# Timeouts (increase for large shuffles or slow storage)
celeborn.rpc.askTimeout=240s
celeborn.worker.commitFiles.timeout=240s
Spark Client Tuning
# Hash writer: better for moderate partition counts
spark.celeborn.client.spark.shuffle.writer=hash
spark.celeborn.client.push.buffer.max.size=64k
# Sort writer: better for very high partition counts (> 100k)
spark.celeborn.client.spark.shuffle.writer=sort
# Disable local shuffle reader for consistent performance
spark.sql.adaptive.localShuffleReader.enabled=false