问题
如何根据CPU和内存使用情况监控pyspark python工作进程。
详细信息
根据this doc,一个SPARK工作者可以包含一个或多个python进程。
我们假设我们已经为每个执行器分配了40g内存,这个执行器在一个拥有最多200g内存的工作器上运行。然后根据这个文档设置:“spark.python.worker.memory”,我们可以设置每个python进程的可用内存量。
从spark.python.worker.memory设置描述引用:SPARK:Pyspark:如何监控python工作进程
的存储器聚集期间每蟒工作进程使用,在相同的格式JVM存储器串(例如512M,2克)的量。如果聚合过程中使用的内存高于此数量,则会将数据泄漏到磁盘中。
假设我们将spark.python.worker.memory设置为2g。
对我来说,出现下列问题:
- 我们怎么知道有多少进程pyspark /火花在每个工人/执行人产卵?
- 我们如何监控每个流程消耗的内存量以及整体情况,看看我们设置的“执行程序40g”限制有多接近?
- 我们如何监控每个进程溢出的磁盘数量?
- 更一般地说,我们如何使用spark.python.worker.memory设置来优化或pyspark应用程序。这只是一个试验/错误的问题。如果是这样,怎么可以基准/监控(类似于以上)
为什么..好,我们打的是非常具体到我们的应用程序的一些性能问题。我们正在观察一些我们无法再现的不一致的错误。因此,我们必须监视/理解每次运行应用程序时发生的事情的更精细的细节。