存儲系統
Spark任務須要從一些外部的存儲系統加載數據(如:HDFS 或者 HBase),重要的是存儲系統要接近Spark系統,咱們有以下推薦:
(2)若是能,運行Spark在不一樣的節點上,須要使用相同局域網內部的HDFS節點。
(3)對於低延遲數據存儲如同HBase,使用不一樣的節點上的數據比使用本地存儲系統數據 干擾更小(可是HBase存儲比本地存儲避免干擾性方面表現的更好)
本地硬盤
內存
通常而言,Spark可以運行在任意的 8G to hundreds of gigabytes 的內存的機器上,全部狀況下,咱們推薦最多給Spark配置 75%的內存容量,其餘的容量是系統和buffer緩存使用。
最後,注意,Java VM在超過200 GB的RAM上並不老是表現良好。若是你這這樣的RAM機器,你能夠在上面多跑幾個Worker,在Spark的獨立模式中,你可以在每一個節點上設置多個Workers ,設置 conf/spark-env.sh 中的SPARK_WORKER_INSTANCES變量,而且設置
SPARK_WORKER_CORES
的核數
網絡
根據經驗,當數據在內存中, 使用萬兆網卡程序將運行的更快,特別是「distributed reduce」 application 例如 group-bys 減小,reduce-bys 和SQL的join ,在一個任何給定的application ,你可以經過UI查看Spark的shuffles的過程及多大的數據執行shuffles。
CPU 核數
Spark 每一個每一個集羣要啓動成千上萬的線程,每一個集羣的核數至少是8-16 核。你的工做的負載是依靠CPU ,你也須要更多的:一旦數據在內存中,更多應用取決CPU或者帶寬