1、存储系统
因为spark job需要从外部的存储系统(或文件系统)读取数据(例如:hbase、hdfs等),所有让spark任务尽可能的接近数据本地,让spark和hadoop部署到相同的节点上;数据本地性:将计算任务推送到数据所在地,如果不能保证,也要尽可能的让计算任务接近数据所在地;
2、磁盘
spark虽然是内存计算,但当数据在内存中无法容下或数据需要持久化时,还是需要数据写入本地磁盘,所以磁盘的配置也是很重要的;官方建议,每个节点挂载4-8个磁盘,并且磁盘设置noatime;
3、内存
官方建议每个work配置8g内存,配置太多的内存,JVM的full gc时间会越长,stop the world时间越长;如果机器的配置比较高端,比如内存256g,在其他因素(cpu等)允许的情况下,可以考虑在一个节点上跑多个work进程
4、网络
网络越快越好
5、CPU核数
spark官方建议,每一个节点至少有8-16 cores,当数据已经在内存中后,影响计算性能的因素就剩下网络和cpu了