Celeborn默认支持HDD、SSD、HDFS等多种存储介质,大多数情况下我们都会使用HDD、SSD作为默认存储,这样能保证更高的Shuffle效率和更低的内存使用;但是当我们磁盘资源不足,但是又有空闲的HDFS资源时,我们也可以使用Celeborn On HDFS来提升Spark作业的稳定性;
相较于HDD、SSD,HDFS在读写性能上是处于劣势的;
Celeborn On HDFS需要更多的OffHeap内存。
进入 服务列表 -> Celeborn -> 服务参数 -> celeborn-defaults.conf,做如下配置变更
配置项 | 参数值 | 说明 |
---|---|---|
celeborn.worker.storage.dirs | 无 | HDFS模式下需将此配置注释 |
celeborn.storage.activeTypes | HDFS | 固定值 |
celeborn.storage.hdfs.dir | hdfs://${NN_IP}/user/celeborn | 存储Shuffle数据的HDFS目录,需提前创建好,并修改权限为755 |
进入 服务列表 -> Celeborn -> 服务参数 -> celeborn-env.sh,做如下配置变更
# 适当增大该参数,可参考下面推荐值设置 CELEBORN_WORKER_OFFHEAP_MEMORY HADOOP_CONF_DIR=/etc/emr/hadoop/conf
注意
On HDFS模式下,
100G以下的Shuffle数据量OffHeap建议设置为1G~3G;
100G~1T的Shuffle数据量OffHeap建议设置在3G~30G。
作业提交流程不感知,无需做更改。
Spark 支持使用同一租户下非本集群部署的 Celeborn 服务,当集群中部署了多个Spark集群,或者多个计算集群的时候,用户可能考虑使用统一的Celeborn服务,这样可能减少冗余存储,提高资源利用率。在同一个租户下,不同的EMR集群互访要求集群间的VPC是同一个,且配置相同。
打开计算引擎,例如Spark所在的集群控制台
进入服务列表 -> Spark -> 服务参数,搜索 celeborn.master.endpoints参数,做如下配置变更:
配置项 | 参数值 | 说明 |
---|---|---|
spark.celeborn.master.endpoints | 外置celeborn集群的celeborn endpoints | 目标集群的celeborn服务参数搜索:celeborn.master.endpoints |
查看log,确认使用外置celeborn