调节数据本地化等待时长
prcess_local 进程本地化
node_local 节点本地化
rack_local 机架本地化
any 非本地化
使用堆外内存
当要缓存的数据超级大时,如果存在堆内会触发Full GC,会STW,进程停止工作。
这时考虑使用堆外内存。
spark.memory.offHeap.size
调整连接等待时长
当spark的execuotr进程发生FULL GC,停止工作时,超过一定时间无法建立网络连接,导致网络连接超时。
生产环境下,有时会遇到file not found、file lost等错误,很多是因为Execuotr的BlockManager在拉取数据的时候,无法建立接连,超出默认连接等待时长120s。宣告失败,重试。
可以适当增加超时时长,给些机会。比如:
spark.core.connection.ack.wait.timeout = 300s # 默认120s