更新时间:2024-05-28 GMT+08:00

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。