我正在运行一个非常简单的火花作业,它逐个读取许多s3文件,并在RDD上调用地图/过滤器作业,并将结果写入另一个s3。换句话说,首先有一个for循环,每个循环内有一个sc调用来读取,处理,然后写入步骤。GC减慢火花作业至停止
即使每个文件的大小都比节点的大小和数量小(在每个10 GB的执行程序内存的8个节点内部运行500 MB),速度异常缓慢。
在工作节点标准输出日志,我看到连续的线像这样 [GC2015-10-16T22:31:39.567 + 0000:[ParNew:272655K-> 19K(306688K),0.0292600秒] 467995K-> 195361K( 10451712K),0.0293570秒] [时间:用户= 0.11 sys = 0.00,实际= 0.03秒]
似乎工人们正在被GC'ed死亡。为什么会这样呢?
每10秒间隔有多少个gc线?在大约1/10秒时,这将是正确的(占总CPU的1%)。 – javadba