Apache spark spark中的执行器内存设置
我制作了独立集群,希望找到处理我的应用程序的最快方法。 我的机器有12克内存。这是我试过的一些结果Apache spark spark中的执行器内存设置,apache-spark,Apache Spark,我制作了独立集群,希望找到处理我的应用程序的最快方法。 我的机器有12克内存。这是我试过的一些结果 Test A (took 15mins) 1 worker node spark.executor.memory = 8g spark.driver.memory = 6g Test B(took 8mins) 2 worker nodes spark.executor.memory = 4g spark.driver.memory = 6g Test C(took 6mins) 2 work
Test A (took 15mins)
1 worker node
spark.executor.memory = 8g
spark.driver.memory = 6g
Test B(took 8mins)
2 worker nodes
spark.executor.memory = 4g
spark.driver.memory = 6g
Test C(took 6mins)
2 worker nodes
spark.executor.memory = 6g
spark.driver.memory = 6g
Test D(took 6mins)
3 worker nodes
spark.executor.memory = 4g
spark.driver.memory = 6g
Test E(took 6mins)
3 worker nodes
spark.executor.memory = 6g
spark.driver.memory = 6g
在TestB上,应用程序在2个CPU上并行运行,因此总时间几乎是一半 关于内存-内存设置定义了一个上限设置,少量的内存将使您的。应用程序执行更多GC,如果堆最终被填满,您将收到一个
OutOfMemoryException
关于最合适的配置-嗯,这取决于。如果您的任务不消耗太多RAM,请将Spark配置为具有与您的CPU一样多的执行器。
否则,请配置执行器以匹配所需的适当RAM量。
请记住,这些限制不应该是恒定的,可能会因应用程序需求而改变。快速问题每次测试后是否重新启动集群?我只是想知道缓存是否改善了随后的性能提升?@charlesgomes真的需要重新启动吗?例如,如果在实际测量试验之前运行每个场景一次或两次会怎么样?否。主程序和工作程序从“bin/spark类”开始。我刚刚通过'bin/spark-submit'OutOfMemory重新分配了我的集群异常错误来自执行内存?或者驱动程序内存?它更可能来自执行器,因为它是解析数据的部分。而不是驱动程序内存的用途?我认为这是用于源数据和RDD的完全处理数据。如果执行一个操作,例如RDD.collect(),结果将存储在驱动程序内存中。感谢您对我的帮助:)