减少由于天蓝色数据块中的GC分配失败而导致的时间延迟的步骤

时间:2019-03-06 05:41:53

标签: python apache-spark garbage-collection jvm azure-databricks

我正在火花集群上的azure databricks python笔记本中执行打印“ Hello World”作业。每次运行Job都需要12秒钟以上的时间才能执行,而预计这将花费不到12秒钟的时间,因为这是任何人都能想到的最简单的python代码。当我验证日志时,它显示GC分配失败,如下所示:

2019-02-15T15:47:27.551+0000: [GC (Allocation Failure) [PSYoungGen: 312512K->57563K(390144K)] 498744K->243803K(1409024K), 0.0153696 secs] [Times: user=0.05 sys=0.00, real=0.02 secs] 
2019-02-15T15:47:28.703+0000: [GC (Metadata GC Threshold) [PSYoungGen: 206668K->65267K(385024K)] 392909K->251515K(1403904K), 0.0187692 secs] [Times: user=0.06 sys=0.00, real=0.02 secs] 
2019-02-15T15:47:28.722+0000: [Full GC (Metadata GC Threshold) [PSYoungGen: 65267K->0K(385024K)] [ParOldGen: 186248K->244119K(1018880K)] 251515K->244119K(1403904K), [Metaspace: 110436K->110307K(1144832K)], 0.3198827 secs] [Times: user=0.64 sys=0.04, real=0.32 secs] 

是否想知道由于GC分配失败而导致的作业延迟> 12秒?如果是,我该如何减少呢?如果没有,那么造成延误的其他原因是什么?如何纠正?

1 个答案:

答案 0 :(得分:2)

在集群上启动Spark Job会有开销。如果处理PB,那么开销很小,但是值得注意。 GC在这里不是问题。