如何提高火花簇的应用性能?

时间:2016-04-25 08:05:02

标签: java performance apache-spark

我有一个3节点集群(1个主人+ 2个工作人员)

已分配的驱动程序内存= 12gb

已分配的executor-memory = 12gb

输入数据大小=总共12gb(15个文件,每个800 MB)

两个400 mb和70 mb的文件将存储在两个地图中并向工作人员广播。 对于来自输入数据的每个记录,将在广播编辑的地图中查找匹配,并且将返回一对RDD,例如,JavaPairRdd&lt; Object1,List&lt; <对象2> &GT; r1。

从r1我需要两个输出,

首先,我把它作为r2 = r1.map(Output1Mapper())

第二,我需要输出值List&lt; <对象2>在来自r1的名为key Object1的文件中。

因此我收集Set&lt;中的所有键。对象1&gt;密钥。

并且对于键中的每个Object1将在rdd r1中查找()并且将输出该列表&lt; <对象2>在输出文件中。

问题:

如果我在rdd中加载所有15个文件然后按照上面的过程失败,错误:JAVA HEAP SPACE,然后我将spark.driver.maxResultSize增加到3gb然后再次失败。

我用另一种方式,我在每个输入文件上执行所有上述操作生成输出,然后大约需要35分钟。在群集上。

需要指出如何提高性能以及哪种方法最佳。

0 个答案:

没有答案