我想知道一些参数来加速我的YARN群集上的Spark作业。
我有以下Spark / YARN配置,但我对执行速度不满意。我有很多未使用的vcores和内存。
Spark配置:
- spark.yarn.am.cores = 2
- spark.executor.memory = 5g
- spark.executor.cores = 8
YARN configs:
- yarn.nodemanager.resource.memory-mb = 31744
- yarn.nodemanager.resource.cpu-vcores = 15
- yarn.scheduler.maximum-allocation-mb = 31744
从图像中,
此外,我希望能够在群集中为每个节点分配更多容器。
非常感谢。
答案 0 :(得分:1)
答案 1 :(得分:0)
要在Yarn上改进Spark Jobs,您可以使用以下参数:
spark.executor.instances :它创建了几个执行器(实际上是JVM),以便改进drecute这样的执行。
spark.executor.instances = 6
spark.executor.cores:此外,Spark符合多线程。这意味着对于您定义的每个执行程序,spark可以在此执行程序上同时处理多个操作。你使用:
spark.executor.cores = $int
在内存中缓存:最后,可以将数据缓存在内存中以提高性能。通过使用它,您可以预期划分延迟时间在5倍到20倍之间。要使用此模式,请参阅以下参数:
spark.driver.memory
spark.executor.memory
spark.driver.memory
spark.yarn.memoryOverhead
spark.yarn.driver.memoryOverhead
以下是Cloudera的教程,其中介绍了如何调整spark作业以及如何在内存中缓存数据:
http://blog.cloudera.com/blog/2015/03/how-to-tune-your-apache-spark-jobs-part-2/