我是Spark的新手。我一直在阅读Spark配置和要设置的不同属性,以便我们可以优化工作。但我不知道如何弄清楚应该设置什么?
例如,我创建了一个类型为r3.8x Large(1Master和10个slave)的集群
如何设置:
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个广播地图。
谢谢
答案 0 :(得分:0)
要调整应用程序,您需要了解一些事情
1)您需要监控您的应用程序,无论您的群集是否未被利用,或者您创建的应用程序使用了多少资源
可以使用各种工具进行监控,例如。 Ganglia从Ganglia您可以找到CPU,内存和网络使用情况。
2)基于对CPU和内存使用情况的观察,您可以更好地了解应用程序需要何种调整
形成你的Spark点
在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
希望这有助于!!