Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.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对MongoDB的慢速读取-奇怪的任务分配_Mongodb_Apache Spark - Fatal编程技术网

Spark对MongoDB的慢速读取-奇怪的任务分配

Spark对MongoDB的慢速读取-奇怪的任务分配,mongodb,apache-spark,Mongodb,Apache Spark,我有一个包含15个碎片的MongoDB 4.2集群;数据库存储6GB的分片集合(即每台机器大约400MB) 我正在尝试阅读ApacheSpark的整个系列,它运行在同一台机器上。Spark的应用程序使用--num executors 8和--executor cores 6运行;通过配置MongoSharedPartitioner,可通过火花接头进行连接 除了阅读速度非常慢(大约1.5分钟;但是,据我所知,MongoDB上的完全扫描通常不好),我在Spark的任务分配中遇到了这种奇怪的行为:

我有一个包含15个碎片的MongoDB 4.2集群;数据库存储6GB的分片集合(即每台机器大约400MB)

我正在尝试阅读ApacheSpark的整个系列,它运行在同一台机器上。Spark的应用程序使用
--num executors 8
--executor cores 6
运行;通过配置MongoSharedPartitioner,可通过火花接头进行连接

除了阅读速度非常慢(大约1.5分钟;但是,据我所知,MongoDB上的完全扫描通常不好),我在Spark的任务分配中遇到了这种奇怪的行为:

问题如下:

  • 出于某种原因,只有一个执行器开始从数据库读取数据,而所有其他执行器等待25秒开始读取数据。红色条对应于“任务反序列化时间”,但我的理解是它们只是空闲的(如果有并发阶段,这些执行者处理其他事情,然后仅在25秒后返回此阶段)
  • 出于其他原因,在一段时间后,任务的并发分配暂停,然后完全恢复(在作业开始后约55秒);你可以在图片中间看到它,因为同时启动了一系列的任务。
  • 总的来说,如果任务分配得当,完全扫描可以在更短的时间内完成


    这些行为的原因是什么?谁负责(是Spark、Spark连接器还是MongoDB)?是否有一些配置参数可能导致这些问题?

    在您的情况下,似乎mongos是一个瓶颈,如果您可以将任务拆分为15个专用任务(每个碎片1个)并直接对碎片执行读取,可能会更快…有趣的观察。但这可能吗?从我在文档()中看到的内容来看,mongos还负责路由结果。。。(在任何情况下,我都可以尝试为mongos提供更多资源)这是可能的,但仅限于读取…RAM的数量和CPU的数量是多少?