Spark.reducer.maxSizeInFlight
默认值:48m
参数说明:该参数用于设置shuffle read任务的buff缓冲区大小,该缓冲区决定一次可以拉取多少数据。
调整建议:如果可用内存资源足够,则可以增加参数的大小(例如96m),从而减少拉取数据的次数,这可以减少网络传输的次数并提高性能。 在实践中发现,合理调整参数后,性能会提高1%至5%。
但是executor内存不足时,设置的太大,就会造成OOM导致宕机
Spark.shuffle.file.buffer
默认值:32k
参数说明:该参数用于设置shuffle write任务的bufferedOutputStream的缓冲区大小。 将数据写入磁盘文件之前,将其写入缓冲区,然后再将缓冲区写入磁盘后将其填充。
调整建议:
如果可用内存资源足够,则可以增加此参数的大小(例如64k),以减少在随机写入过程中磁盘文件溢出的次数,从而可以减少磁盘的数量。 IO时间和提高性能在实践中发现,合理调整参数后,性能将提高1%到5%。
Spark.shuffle.io.maxRetries
默认值:3
参数说明:shuffle read任务从shuffle write任务那里节点正在拉自己的数据,如果网络由于异常拉失败而失败,它将自动重试。 此参数表示可以重试的最大次数。 如果在指定的次数内进行或不成功,则可能导致作业失败。
调优建议:
对于那些包含耗时的shuffle的作业,建议增加最大重试次数(例如60次),以避免由于诸如JVM或网络的完整gc之类的因素而导致数据失败。 不稳定。 在实践中发现,对于大量数据(数十亿到数十亿的shuffle过程),调整参数可以大大提高稳定性。
spark.network.timeout
默认120s
所有网络交互的默认超时时间。 如果未配置,则将使用此配置代替spark.storage.blockManagerSlaveTimeoutMs,spark.shuffle.io.connectionTimeout,spark.rpc.askTimeout或spark.rpc.lookupTimeout。
用途
若如出现各种timeout,executor lost ,task lost
spark.network.timeout 根据情况改成300(5min)或更高