2017-06-15 30 views
1

我想了解這張圖片中的當前Spark情況。如何閱讀Spark UI

它的樣子對我

  • 4個工人機93.3 GB的RAM每個
  • 應用pyskark-shell使用的每一臺機器和32 GB RAM 10個內核在每臺機器
  • 應用backtestin2用途每臺機器2個或6個內核,每臺機器8個Gb

注意:我相信有關如何作業均已節點之間分開。)

我的意料

  • 應用pyskark-shell使用的每一臺機器和32 GB RAM 10個內核在每臺機器每個核心= 320千兆使用總
  • 應用backtestin2使用16個內核機器之間分割,並且每個核心需要的8 Gb中的每個機器=總128千兆

這是否意味着第每個節點的內存是否在特定應用程序的節點上運行的所有任務之間共享?我雖然認爲conf.set('spark.executor.memory', executor_memory)應該是每個任務。

理由:

我知道每個任務需要多少內存,但我不知道有多少任務進入執行的每個因此,我不能每次執行內存估計。

enter image description here

回答

1

這是否意味着每個節點的內存是一個節點上運行特定應用的所有任務之間共享?

這是正確的,每個節點的內存是指爲每個節點上的應用程序分配的總內存。此存儲器根據火花存儲器配置進一步拆分(http://spark.apache.org/docs/latest/configuration.html#memory-management)。在估計內存需求時,需要考慮用於存儲(即緩存數據幀/ rdds)和執行的內存量。默認情況下,一半內存用於執行任務,另一半用於存儲。可配置的還有可並行運行的任務數量(默認爲內核數量)。假設有一半內存用於執行,並且假設您已適當分區數據,那麼使用默認配置運行應用程序所需的總內存量大約爲2 *(並行運行的任務數量)*(需要內存運行最大的任務之一)。當然,這個估計高度依賴於你的具體用例,配置和實現。在https://spark.apache.org/docs/latest/tuning.html還有更多內存相關的提示。希望Spark UI在將來能夠提供更清晰的內存使用見解。