如何设置配置以使 Spark/Yarn 作业更快?

How to set configurations to make Spark/Yarn job faster?

我是 Spark 的新手。我一直在阅读有关 Spark 配置和要设置的不同属性的信息,以便我们可以优化作业。但我不确定如何确定应该设置什么?

比如我创建了一个r3.8x Large类型的集群(1Ma​​ster和10 slaves)

如何设置:

spark.executor.memory           
spark.driver.memory             
spark.sql.shuffle.partitions
spark.default.parallelism
spark.driver.cores              
spark.executor.cores             
spark.memory.fraction            
spark.executor.instances

或者我应该保留默认值吗?但保留默认值会使我的工作变得非常缓慢。我的工作有 3 个组 bas 和 3 个广播地图。

谢谢

为了调整您的应用程序,您需要了解一些事情

1) 您需要监控您的应用程序,无论您的集群是否未得到充分利用,您创建的应用程序使用了多少资源

可以使用各种工具进行监控,例如。 Ganglia 在 Ganglia 中,您可以找到 CPU、内存和网络使用情况。

2) 根据对 CPU 和内存使用情况的观察,您可以更好地了解您的应用程序需要什么样的调优

形成你的火花点

在火花-defaults.conf

您可以指定需要什么样的序列化,您的应用程序需要多少驱动程序内存和执行程序内存,甚至您可以更改垃圾收集算法。

以下是几个示例,您可以根据需要调整此参数

spark.serializer                 org.apache.spark.serializer.KryoSerializer
spark.driver.memory              5g
spark.executor.memory            3g
spark.executor.extraJavaOptions  -XX:MaxPermSize=2G -XX:+UseG1GC
spark.driver.extraJavaOptions    -XX:MaxPermSize=6G -XX:+UseG1GC

有关详细信息,请参阅 http://spark.apache.org/docs/latest/tuning.html

希望对您有所帮助!!