簡體   English   中英

SPARK:Pyspark:如何監控python worker進程

[英]SPARK: Pyspark: how to monitor python worker processes


如何在CPU和內存使用方面監視pyspark python worker進程。

細節
根據這個文檔 ,一個SPARK工作者可以包含一個或多個python進程。

假設我們已經為每個執行器分配了40g內存,該內存在一個具有高達200g可用內存的工作器上運行。 然后根據這個記錄的設置:“spark.python.worker.memory”我們可以設置每個python進程可用的內存量。

引自spark.python.worker.memory設置說明:

聚合期間每個python worker進程使用的內存量,格式與JVM內存字符串相同(例如512m,2g)。 如果聚合期間使用的內存超過此數量,則會將數據溢出到磁盤中。

我們假設我們將spark.python.worker.memory設置為2g。

對我來說,出現以下問題:

  • 我們如何知道pyspark / spark在每個worker / executor上產生了多少進程?
  • 我們如何監控每個進程消耗多少內存,以及我們設置的'執行者40g'限制的接近程度?
  • 我們如何監控每個進程對磁盤的溢出程度?
  • 更一般地說,我們如何使用spark.python.worker.memory設置優化或使用pyspark應用程序。 這只是一個試驗/錯誤的問題。 如果是這樣,如何基准/監控(類似於上面)



為什么......我們正在遇到一些非常特定於我們應用程序的性能問題。 我們正在觀察一些我們無法重現的不一致錯誤。 因此,我們必須在每次運行應用程序時監視/理解所發生情況的更精細細節。

根據這個記錄的設置:“spark.python.worker.memory”我們可以設置每個python進程可用的內存量。

這不是真的。 正如您在鏈接的文檔中所解釋的那樣,此設置用於控制聚合行為,而不是一般的Python工作者內存。

此內存占本地對象或廣播變量的大小,僅用於聚合的臨時結構。

我們如何知道pyspark / spark在每個worker / executor上產生了多少進程?

Python工作程序可以生成到可用內核數量設置的限制。 因為在運行期間可以啟動或殺死工人,所以在峰值負載之外的工人的實際數量可以更小。

我們如何監控每個進程消耗多少內存,以及我們設置的'執行者40g'限制的接近程度?

沒有Spark特定的答案。 您可以使用應用程序本身的常規監視工具或resource模塊。

我們如何監控每個進程對磁盤的溢出程度?

您可以使用Spark REST API獲取一些見解,但一般來說PySpark指標有些限制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM