Spark读写Hudi资源配置建议
- Spark读写Hudi任务资源配置规则,内存和CPU核心的比例2:1,堆外内存和CPU核心比例0.5:1;即一个核心,需要2G堆内存,0.5G堆外内存
Spark初始化入库场景,由于处理的数据量比较大,上述资源配比需要调整,内存和Core的比例推荐4:1,堆外内存和Core的比例1:1。
示例:
spark-submit --master yarn-cluster --executor-cores 2 --核心 --executor-memory 4g --堆内存 --conf spark.executor.memoryOverhead=1024 --堆外内存
- 基于Spark进行ETL计算,CPU核心 :内存比例建议>1:2,推荐1:4~1:8
上一个规则是指纯读写的资源配比,如果Spark的作业除了读写还有业务逻辑计算,该过程会导致需要内存增加,因此建议CPU核心与内存的比例大于1:2,如果逻辑比较复杂适当调大内存,这要基于实际情况进行调整。一般默认推荐配置为1:4~1:8。
- 针对bucket表的写入资源配置,建议给的CPU核心数量不小于桶数目 (分区表每次可能写入多个分区,理想情况下建议给的CPU核心数量=写入分区*分桶数;实际配置的core小于这个值,写入性能线性下降)。
当前表bucket数为3,同时写入分区数为2, 建议入库Spark任务配置的core数量大于等于3*2。
spark-submit --master yarn-cluster --executor-cores 2 --executor-memory 4g --excutor-num 3
以上配置代表excutor-num*executor-cores=6 >=分区数*分桶数=6。