繁体   English   中英

Spark可调参数特别是执行程序内存

[英]Spark tunables specially executor-memory

time ../bin/spark-submit --master yarn --deploy-mode cluster --driver-memory 2g --executor-memory 3G --num-executors 100 /var/tmp/learning/Movie-Similarities-1m-hdfs.py 260

拍摄时间:6分5秒9393秒

time ../bin/spark-submit --master yarn --deploy-mode cluster --driver-memory 2g --executor-memory 2G --num-executors 100 /var/tmp/learning/Movie-Similarities-1m-hdfs.py 260

耗时:5分46.234秒

time ../bin/spark-submit --master yarn --deploy-mode cluster --driver-memory 3g --executor-memory 4G --num-executors 100 /var/tmp/learning/Movie-Similarities-1m-hdfs.py 260​

耗时:9分35.313秒

我知道我(故意)对num-executors进行了超额认购,这仅仅是为了充分利用集群。

对这些结果有何看法?

对这些结果有何看法?

与更少的执行器(更多的内存)相比,使用更多的执行器(更少的内存)可以更快地运行代码。 通常,存在最佳平衡,这取决于工作流程和群集的硬件。 真正找到最佳点的唯一方法是反复试验。

就是说,我通常发现执行者更少,拥有更多资源通常能表现更好。 您尚未尝试控制的一件事是执行程序将使用的CPU内核数。 为了启动执行程序,需要有足够的可用内存和足够的CPU内核。 如果您的两个测试都受内存限制(例如,资源管理器在耗尽内核之前先耗尽内存),那么2G执行程序测试将使用的CPU内核数量是4G测试的两倍。 如果两个测试均受CPU内核限制,则4G测试将使用2G测试内存的两倍。

长话短说,值得考虑每个执行者获得的核心数量。 我创建了一个电子表格 ,可以帮助您管理这些折衷。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM