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

hve*_*iga 4 performance distributed-computing cluster-computing bigdata apache-spark

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

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

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

我尝试了一小部分数据集(30 GB),似乎工作正常.

gsa*_*ras 5

似乎舞台在某些节点本地完成比其他节点更快.从这个观察结果来看,这是我会尝试的:

  1. 缓存您处理的RDD.当你不再需要它时,别忘了忘掉它. 了解缓存,坚持使用Spark.
  2. 检查分区是否平衡,这似乎不是这种情况(这可以解释为什么一些本地阶段比其他阶段更早完成).平衡分区是圣杯,不是吗?:) 如何跨分区平衡我的数据?
  3. 降低通信成本,即使用比您使用的更少的工人,并看看会发生什么.当然,这在很大程度上取决于您的应用.你看,有时通信成本变得如此之大,它们占主导地位,因此使用更少的机器,可以加快工作速度.但是,我会这样做,只有步骤1和2不够.