Apache Spark中的任务需要更长的时间

时间:2015-08-27 13:45:24

标签: performance apache-spark bigdata cluster-computing distributed-computing

我有一个大型数据集,我试图使用Apache Spark运行(大约5TB)。我注意到,当作业开始时,它会非常快速地检索数据,并且作业的第一阶段(map转换)非常快速地完成。

但是,在处理了大约500GB的数据后,map转换开始变慢,一些任务需要几分钟甚至几小时才能完成。

我正在使用10台机器,122 GB和16CPU,我正在为每个工作节点分配所有资源。我想过增加机器的数量,但还有其他的东西我可能会丢失吗?

我尝试过我的一小部分数据集(30 GB),它似乎工作正常。

2 个答案:

答案 0 :(得分:5)

似乎舞台在某些节点本地完成比其他节点更快。从这一观察出发,我会尝试这样做:

  1. 缓存您处理的RDD。当你不再需要它时,别忘了忘掉它。 Understanding caching, persisting in Spark
  2. 检查分区是否平衡,这似乎不是 案例(这可以解释为什么一些地方阶段完成的很多 早于其他人)。拥有平衡的隔断是圣杯 在中,不是吗? :) How to balance my data across the partitions?
  3. 降低通信成本,即使用较少的工作人员 使用,看看会发生什么。当然,这在很大程度上取决于你的 应用。你看,有时沟通成本变得如此之大, 他们占主导地位,所以使用更少的机器,例如,加快了 工作。但是,我会这样做,只有步骤1和2不够。

答案 1 :(得分:0)

在没有任何更多信息的情况下,似乎在计算的某个时刻,您的数据会溢出到磁盘,因为内存中没有更多空间。 这只是一个猜测,你应该检查你的Spark UI。