更新时间:2025-07-01 GMT+08:00
分享

Spark读写Hudi资源配置建议

  • Spark读写Hudi任务资源配置规则,内存和CPU核心的比例2:1,堆外内存和CPU核心比例0.5:1;即一个核心,需要2 GB堆内存,0.5 GB堆外内存。

    Spark初始化入库场景,由于处理的数据量比较大,上述资源配比需要调整,内存和Core的比例推荐4:1,堆外内存和Core的比例1:1。

    配置示例:

    spark-submit
      --master yarn-cluster
      --executor-cores  2                          --每个Executor的CPU核心数
      --executor-memory 4g                         --每个Executor的堆内存大小
      --conf spark.executor.memoryOverhead=1024    --每个Executor的堆外内存(MB)
  • 基于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

    以上配置代表executor-num*executor-cores=6 >=分区数*分桶数=6。

相关文档