• num-executors:该作业总共需要多少executor进程执行
建议:每个作业运行一般设置5-~100个左右较合适
• executor-memory:设置每个executor进程的内存, num-executors* executor-memory代表作业申请的总内存量(尽量不要超过最大总内存的1/3~1/2)
建议:设置4G~8G较合适
• executor-cores: 每个executor进程的CPU Core数量,该参数决定每个executor进程并行执行task线程的能力,num-executors * executor-cores代表作业申请总CPU core数(不要超过总CPU Core的1/3~1/2 )
建议:设置2~4个较合适
• driver-memory: 设置Driver进程的内存
建议:通常不用设置,一般1G就够了,若出现使用collect算子将RDD数据全部拉取到Driver上处理,就必须确保该值足够大,否则OOM内存溢出
• spark.default.parallelism: 每个stage的默认task数量
建议:设置500~1000较合适,默认一个HDFS的block对应一个task,Spark默认值偏少,这样导致不能充分利用资源
• spark.storage.memoryFraction: 设置RDD持久化数据在executor内存中能占的比例,默认0.6,即默认executor 60%的内存可以保存持久化RDD数据
建议:若有较多的持久化操作,可以设置高些,超出内存的会频繁gc导致运行缓慢
• spark.shuffle.memoryFraction: 聚合操作占executor内存的比例,默认0.2
建议:若持久化操作较少,但shuffle较多时,可以降低持久化内存占比,提高shuffle操作内存占比
暂无数据