我制作了独立群集,希望找到处理我的应用的最快方法。 我的机器有12g内存。这是我尝试过的一些结果。
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
答案 0 :(得分:1)
在TestB上,您的应用程序在2个CPU上并行运行,因此总时间几乎为一半。
关于记忆 - 记忆设定定义上限设定少量会使你的记忆。应用程序执行更多GC,如果最终你的堆满了,你将收到OutOfMemoryException
。
关于最合适的配置 - 嗯,这取决于。如果您的任务不占用大量RAM - 将Spark配置为具有与CPU相同的执行程序。 否则,配置执行程序以匹配所需的适当RAM量。 请记住,这些限制不应该是不变的,并且可能会因您的应用程序要求而改变。