【Spark】---- Spark 硬件配置

存儲系統
Spark任務須要從一些外部的存儲系統加載數據(如:HDFS 或者 HBase),重要的是存儲系統要接近Spark系統,咱們有以下推薦:
 
(1)若是可能,運行Spark在相同的HDFS節點,最簡單的方法是創建一個引起相同的節點上的集羣獨立模式( http://spark.apache.org/docs/latest/spark-standalone.html),和配置Spark的Configure和Hadoop的內存和CPU使用避免干擾(對於Hadoop,) 或者 你可以運行Hadoop和Spark在一個相同的cluster manager 像 Mesos或者Hadoop YARN
(2)若是能,運行Spark在不一樣的節點上,須要使用相同局域網內部的HDFS節點。
(3)對於低延遲數據存儲如同HBase,使用不一樣的節點上的數據比使用本地存儲系統數據 干擾更小(可是HBase存儲比本地存儲避免干擾性方面表現的更好)
 
本地硬盤
雖然Spark可以在內存中執行大量的計算,它仍然須要本地硬盤做爲數據的存儲,不適合把數據存儲在RAM中,以及保護中間的輸出階段,咱們推薦每一個節點有4-8個硬盤,沒有配置RAID(就如同不一樣的掛載點) 在Linux中掛載硬盤 使用noatime option( http://www.centos.org/docs/5/html/Global_File_System/s2-manage-mountnoatime.html) 減小沒必要要的寫操做,在Spark裏面,配置 
spark.local.dir 變量以一個","號隔開( http://spark.apache.org/docs/latest/configuration.html),若是你正在運行着HDFS,它正好和HDFS放在一個相同的硬盤上。
 
內存
通常而言,Spark可以運行在任意的 8G to hundreds of gigabytes 的內存的機器上,全部狀況下,咱們推薦最多給Spark配置 75%的內存容量,其餘的容量是系統和buffer緩存使用。
你的內存須要多大是依靠你的Application決定的,肯定你的應用使用多少內存特定大小,你須要加載一部分特定的數據到Spark RDD 並使用 UI的存儲選項卡(http://<driver-node>:4040)觀測內存使用量。注意,內存使用量大大影響存儲水平和序列化格式,看調度指南如何優化( http://spark.apache.org/docs/latest/tuning.html)。
最後,注意,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或者帶寬
相關文章
相關標籤/搜索