我是Spark的新手。我一直在阅读Spark配置和不同的属性设置,以便我们可以优化工作。但是我不确定我怎么知道我应该设置什么?
例如,我创建了一个类型为r3.8x Large的集群(1个主集群和10个从集群)
如何设置:
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个分组和3个广播地图。
谢谢
要调优应用程序,您需要了解以下几点
1)您需要监视您的应用程序,您的集群是否被充分利用,您创建的应用程序使用了多少资源
可以使用各种工具进行监控,例如:从Ganglia你可以找到CPU,内存和网络使用。
2)基于对CPU和内存使用情况的观察,您可以更好地了解您的应用程序需要哪种调优
Form Spark point of you
在spark-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
希望这有帮助!