Engine Integration
Apache Spark
- Deploy Client JAR
cp $CELEBORN_HOME/spark/celeborn-client-spark-3-shaded_2.12-0.6.2.jar $SPARK_HOME/jars/
Core Spark Configuration
# Core settings
spark.shuffle.manager=org.apache.spark.shuffle.celeborn.SparkShuffleManager
spark.celeborn.master.endpoints=master1:9097,master2:9097,master3:9097
spark.shuffle.service.enabled=false
spark.serializer=org.apache.spark.serializer.KryoSerializer
# Performance tuning
spark.celeborn.client.push.replicate.enabled=true
spark.celeborn.client.spark.shuffle.writer=hash
spark.sql.adaptive.localShuffleReader.enabled=false
# Dynamic allocation (Spark 3.5+)
spark.dynamicAllocation.enabled=true
spark.dynamicAllocation.shuffleTracking.enabled=false
spark.shuffle.sort.io.plugin.class=org.apache.spark.shuffle.celeborn.CelebornShuffleDataIO
- Quick Test with spark-shell
/usr/odp/3.3.6.4-1/spark3/bin/spark-shell --conf spark.shuffle.manager=org.apache.spark.shuffle.celeborn.SparkShuffleManager --conf spark.shuffle.service.enabled=false --conf spark.sql.adaptive.localShuffleReader.enabled=false --conf spark.dynamicAllocation.shuffleTracking.enabled=false
Apache Flink
- Deploy Client JAR.
cp $CELEBORN_HOME/flink/celeborn-client-flink-1.19-shaded_2.12-0.6.2.jar $FLINK_HOME/lib/
- Configure Flink.
shuffle-service-factory.class=org.apache.celeborn.plugin.flink.RemoteShuffleServiceFactory
execution.batch-shuffle-mode=ALL_EXCHANGES_BLOCKING
celeborn.master.endpoints=master1:9097,master2:9097,master3:9097
# Performance
celeborn.client.shuffle.batchHandleReleasePartition.enabled=true
celeborn.client.push.maxReqsInFlight=128
celeborn.data.io.numConnectionsPerPeer=16
celeborn.data.io.threads=32
Apache Tez
Append following property in yarn-site xml under yarn.application.classpath and under Mapreduce mapreduce.application.classpath.
/usr/odp/3.3.6.4-1/celeborn/tez/celeborn-client-tez-shaded_2.12-0.6.2.3.3.6.4-1.jar:/usr/odp/3.3.6.4-1/celeborn/mr/celeborn-client-mr-shaded_2.12-0.6.2.3.3.6.4-1.jar
# In tez-site.xml
tez.am.launch.cluster-default.cmd-opts=org.apache.tez.dag.app.CelebornDagAppMaster
tez.celeborn.master.endpoints=master1:9097,master2:9097,master3:9097
tez.cluster.additional.classpath.prefix append /usr/odp/3.3.6.3-101/celeborn/tez/celeborn-client-tez-shaded_2.12-0.6.2.3.3.6.3-101.jar
MapReduce
Need to add above tez configuration for classpath addition and then following additional properties in Mapreduce configuration.
yarn.app.mapreduce.am.command-opts=org.apache.celeborn.mapreduce.v2.app.MRAppMasterWithCeleborn
mapreduce.job.reduce.slowstart.completedmaps=1
mapreduce.celeborn.master.endpoints=master1:9097,master2:9097,master3:9097
mapreduce.job.map.output.collector.class=org.apache.hadoop.mapred.CelebornMapOutputCollector
mapreduce.job.reduce.shuffle.consumer.plugin.class=org.apache.hadoop.mapreduce.task.reduce.CelebornShuffleConsumer
yarn.app.mapreduce.am.job.recovery.enable=false
High Availability
Master HA Overview
Celeborn Master achieves HA using Apache Ratis (Raft consensus protocol). A minimum of 3 Master nodes is required. Odd numbers (3, 5, or 7) are required so the cluster can elect a leader by majority vote.
HA Requirement
Minimum: 3 Master nodes. Always use odd numbers (3, 5, 7).
Ratis storage: /var/lib/celeborn/ratis — ensure this path has adequate I/O performance.
Worker fault tolerance: Enable replication (spark.celeborn.client.push.replicate.enabled=true).
Master HA Configuration
# Enable HA mode
celeborn.master.ha.enabled=true
# Node 1
celeborn.master.ha.node.1.host=master1.example.com
celeborn.master.ha.node.1.port=9097
celeborn.master.ha.node.1.ratis.port=9872
# Node 2
celeborn.master.ha.node.2.host=master2.example.com
celeborn.master.ha.node.2.port=9097
celeborn.master.ha.node.2.ratis.port=9872
# Node 3
celeborn.master.ha.node.3.host=master3.example.com
celeborn.master.ha.node.3.port=9097
celeborn.master.ha.node.3.ratis.port=9872
# Ratis metadata storage
celeborn.master.ha.ratis.raft.server.storage.dir=/var/lib/celeborn/ratis
Ambari Mpack HA Settings
Property (in celeborn-ha) | Value |
celeborn.master.ha.enabled | true |
celeborn.master.ha.node.mapping | master1:1,master2:2,master3:3 |
celeborn.master.ha.rpc.port | 9097 |
celeborn.master.ha.ratis.port | 9872 |
Worker Fault Tolerance
Enable data replication on the Spark client to ensure shuffle data survives a worker node failure:
spark.celeborn.client.push.replicate.enabled=true
