如何解决Spark资源分配:核心数
需要了解如何配置Spark作业的核心。
我的机器可以有最大的11 Cores,28 Gb memory
中。
以下是我为Spark作业分配资源的方式,其执行时间为4.9 mins
--driver-memory 2g \
--executor-memory 24g \
--executor-cores 10 \
--num-executors 6
但是我浏览了多篇文章,提到内核数应该是〜5,当我使用这种配置运行作业时,执行时间增加到6.9 mins
--driver-memory 2g \
--executor-memory 24g \
--executor-cores 5 \
--num-executors 6 \
- 将内核数量保持在最大值附近会不会有任何问题。值(在我的情况下为10)?
- 如许多文章中所建议的那样,将内核数保持为5是否有好处?
- 因此,在确定核数时通常应考虑哪些因素?
解决方法
这完全取决于作业的行为,一个配置不能优化所有需求。
--executor-cores
表示1台计算机上没有内核。
该数字太大(> 5),则计算机的磁盘和网络(将在该计算机上的所有执行器spark内核之间共享)将造成瓶颈。如果该值太小(〜1),则将无法获得良好的数据并行性,也无法从同一台计算机上的数据局部性中受益。
TLDR
:--executor-coers 5很好。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。