我是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个小组bas和3个广播的地图。
谢谢
为了调整您的应用程序,您需要了解几件事
1)您需要监视您的应用程序,无论您的群集是否被充分利用,您创建的应用程序使用了多少资源
可以使用各种工具进行监控。Ganglia在Ganglia中,您可以找到CPU,内存和网络使用情况。
2)根据对CPU和内存使用情况的观察,您可以更好地了解应用程序需要进行哪种调整
形成你的火花点
在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
希望这可以帮助!!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句