1. 程式人生 > >spark部署所需硬體資源

spark部署所需硬體資源

  • 儲存系統

    由於大多數Spark作業可能必須從外部儲存系統(例如Hadoop檔案系統或HBase)讀取輸入資料,因此將其儘可能靠近此係統放置非常重要。我們建議如下:

  • 如果可能的話,在與HDFS相同的節點上執行Spark。最簡單的方法是建立一個Spark 獨立模式叢集同一節點上,並配置Spark和Hadoop的記憶體和CPU的使用情況,以避免相互干擾(Hadoop的,相關的選項是 mapred.child.java.opts為每個任務的記憶體和mapreduce.tasktracker.map.tasks.maximum 和mapreduce.tasktracker.reduce.tasks.maximum

    的任務數) 。或者,您可以在公共叢集管理器(如Mesos或 Hadoop YARN)上執行Hadoop和Spark 。

  • 如果無法做到這一點,請在與HDFS相同的區域網中的不同節點上執行Spark。

  • 對於像HBase這樣的低延遲資料儲存,最好在不同於儲存系統的節點上執行計算作業以避免干擾。

  • 記憶體

    通常,Spark可以在每臺機器上執行8 GB到數百GB的記憶體。在所有情況下,我們建議僅為Spark分配最多75%的記憶體; 剩下的就是作業系統和緩衝區快取了。

    您需要多少記憶體取決於您的應用程式。要確定應用程式對特定資料集大小的使用量,請在Spark RDD中載入資料集的一部分,並使用Spark監視UI(http://<driver-node>:4040

    )的“儲存”選項卡檢視其在記憶體中的大小。請注意,記憶體使用率受儲存級別和序列化格式的影響很大 - 有關如何減少記憶體的提示,請參閱調整指南

    最後,請注意Java VM並不總是表現出超過200 GB的RAM。如果購買RAM大於此值的計算機,則可以為每個節點執行多個工作JVM。在Spark的獨立模式下,您可以使用SPARK_WORKER_INSTANCES變數in conf/spark-env.sh和每個worker的核心數設定每個節點的worker數SPARK_WORKER_CORES

  • 本地磁碟

    雖然Spark可以在記憶體中執行大量計算,但它仍然使用本地磁碟來儲存不適合RAM的資料,以及儲存各階段之間的中間輸出。我們建議每個節點有4-8個磁碟

    沒有配置RAID(就像單獨的掛載點一樣)。在Linux中,使用noatime選項安裝磁碟 以減少不必要的寫入。在Spark中,將 變數配置spark.local.dir以逗號分隔的本地磁碟列表。如果您正在執行HDFS,則可以使用與HDFS相同的磁碟。

  • 網路

    根據我們的經驗,當資料在記憶體中時,很多Spark應用程式都是網路繫結的。使用10千兆位或更高的網路是使這些應用程式更快的最佳方式。對於“分散式減少”應用程式尤其如此,例如分組,減少和SQL連線。在任何給定的應用程式中,您都可以從應用程式的監視UI(http://<driver-node>:4040)中檢視Spark在網路中的資料量。

  • CPU核心

    Spark可以很好地擴充套件到每臺機器數十個CPU核心,因為它線上程之間執行的共享最少。您應該為每臺機器配置至少8-16個核心。根據工作負載的CPU成本,您可能還需要更多:一旦資料在記憶體中,大多數應用程式都受CPU或網路限制。

     

參考:

Hardware Provisioning

spark叢集部署-硬體配置官方建議

Apache Spark: The number of cores vs. the number of executors