use*_*405 2 parallel-processing svd apache-spark apache-spark-mllib
我正在测试每个执行器(--executor-cores)的不同核心数对Spark上SVD的运行时间的影响.在--executor-cores固定的情况下,主数据RDD的分区数量是变化的.但是,--executor-cores对于给定数量的RDD分区,对于不同的SVD计算时间似乎没有显着变化.这有点令人困惑.
我的环境是:
Standaloneclient我已经绘制了结果,--executor-cores = [4, 16]并且可以看出,对于给定的分区大小,分区大小增加时的计算时间之间没有太大差异.所以我的问题是:
通常,每个执行程序的最佳核心平衡因工作负载而异; 虽然每个执行程序的核心数通常会减少每个执行程序的开销,但还有一些其他考虑因素会影响性能与每个执行程序的核心数量相反,主要是围绕流程全局共享资源和争用瓶颈:
另一方面,为每个执行程序添加更多内核的好处包括:
Cloudera博客文章解释了很多这些权衡和具体数字,特别是关于过大执行程序的缺点.
在少量分区的情况下,理论上具有比执行器更少的分区,只要任务在每种情况下均匀地分布到不同的执行器中,性能应该与更大的执行器更好或相等.但是,如果任务的打包将它们全部放在一个执行程序上,那么它只取决于工作量; 重量级的东西可以受益于这样一个事实:一切都是本地的,但HDFS I/O重的东西会受到争用.
| 归档时间: |
|
| 查看次数: |
866 次 |
| 最近记录: |