如何在spark上执行多个脚本?

qzlgjiam  于 2021-05-17  发布在  Spark
关注(0)|答案(1)|浏览(578)

我有多个python脚本,它们不会占用很多内存。这个脚本在pyspark上执行。
spark主机(独立)有4cpu(核心),16g内存,所以spark一次只能运行4个脚本(1个脚本:1个核心)
但是,我想spark一次运行20~30个脚本怎么办?
这是我的spark master web ui图像。拜托,帮帮我。
在此处输入图像描述在此处输入图像描述

ogq8wdun

ogq8wdun1#

考虑到你只有4个核心,你不太可能同时完成那么多任务,你也不希望这样做。spark示例上的并行性可能会受到以下任何限制:
硬件(即您的机器有多少物理核心)
spark并行性和核心使用的配置是什么,即spark配置设置,例如 spark.default.parallelism 以及 spark.executor.cores spark调度器(fifo/fair)的配置是什么?如果设置为fifo,示例将尝试一次解算一个“脚本”(但仍按第5点所述并行工作)
如何提交“脚本”—如果您从一个进程一个线程提交它们,并且总是收集回python,那么它们将连续运行,因为收集回python(驱动程序)可能会阻塞
数据的分区( spark.sql.shuffle.partitions 实际的数据分区)经验法则是一个worker(这里是cpu核心)一次只能处理一个分区,因此如果您的脚本处理一个有4个分区的Dataframe,它可能会占用您机器上所有可用的核心。
实际的脚本和动作。
根据上述请求,尝试将默认并行性设置为所需的内核数,将spark scheduler设置为fair,并考虑将“脚本” Package 到提交给的函数中 ThreadPoolExecutor 或类似的实现(如果从 PySpark )服从于Spark。这样,spark将尝试在同一时间安排尽可能多的作业。但是,这并不意味着将同时处理20-30个“脚本”(因为这很可能无法实现),它只意味着作业将以并行方式提交、调度和处理 Fair 时尚。

相关问题