Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SPARK:Pyspark:如何监视python工作进程_Python_Apache Spark_Pyspark - Fatal编程技术网

SPARK:Pyspark:如何监视python工作进程

SPARK:Pyspark:如何监视python工作进程,python,apache-spark,pyspark,Python,Apache Spark,Pyspark,问题 如何根据CPU和内存使用情况监控pyspark python工作进程 详细信息 根据,一个SPARK worker可以包含一个或多个python进程。 让我们假设我们已经为每个运行在一个工作进程上的执行器分配了40g内存,这个工作进程有多达200g的可用内存。然后根据这个有文档记录的设置:“spark.python.worker.memory”,我们可以设置每个python进程的可用内存量 引自spark.python.worker.memory设置说明: 聚合期间每个python工作

问题
如何根据CPU和内存使用情况监控pyspark python工作进程

详细信息
根据,一个SPARK worker可以包含一个或多个python进程。

让我们假设我们已经为每个运行在一个工作进程上的执行器分配了40g内存,这个工作进程有多达200g的可用内存。然后根据这个有文档记录的设置:“spark.python.worker.memory”,我们可以设置每个python进程的可用内存量

引自spark.python.worker.memory设置说明:

聚合期间每个python工作进程使用的内存量,格式与JVM内存字符串相同(例如512m、2g)。如果聚合期间使用的内存超过此数量,则会将数据溢出到磁盘中

假设我们将spark.python.worker.memory设置为2g

对我来说,出现了以下问题:

  • 我们如何知道pyspark/spark在每个工作者/执行者上生成了多少个进程
  • 我们如何监控每个进程和整个进程消耗的内存量,以了解我们离设置的“executor 40g”限制有多近
  • 我们如何监控每个进程向磁盘溢出的量
  • 更一般地说,我们如何使用spark.python.worker.memory设置优化或pyspark应用程序。这只是一个试错的问题吗。如果是,如何进行基准测试/监控(类似于上述内容)


为什么?我们遇到了一些特定于应用程序的性能问题。我们观察到一些我们无法重现的不一致的错误。因此,我们必须监视/了解每次应用程序运行时发生的事情的更详细信息

根据这个有文档记录的设置:“spark.python.worker.memory”,我们可以设置每个python进程的可用内存量

事实并非如此。正如您链接的文档中所解释的,此设置用于控制聚合行为,而不是一般的Python工作内存

该内存考虑了本地对象或广播变量的大小,仅用于聚合的临时结构

我们如何知道pyspark/spark在每个工作者/执行者上生成了多少个进程

Python工作线程的数量可以达到可用内核数量设置的限制。由于在运行时可以启动或终止工作进程,因此峰值负载之外的实际工作进程数可能会更小

我们如何监控每个进程和整个进程消耗的内存量,以了解我们离设置的“executor 40g”限制有多近

没有具体的答案。您可以从应用程序本身使用常规监视工具或模块

我们如何监控每个进程向磁盘溢出的量

您可以使用Spark获得一些见解,但一般来说,PySpark指标有一定的局限性