gpt4 book ai didi

scheduling - 哪些因素决定了独立模式下执行程序的数量?

转载 作者:行者123 更新时间:2023-12-03 12:39:59 24 4
gpt4 key购买 nike

给定一个Spark应用程序


哪些因素决定了独立模式下执行程序的数量?在根据this文档的Mesos和YARN中,我们可以指定执行程序/内核数和内存。
一旦许多执行程序启动。 Spark是否以循环方式启动任务,还是足够聪明以查看某些执行程序是否空闲/忙碌,然后相应地安排任务。
另外,Spark如何确定任务数量?我write用一个小的数据集做了一个简单的最高温度程序,Spark在一个执行程序中产生了两个任务。这是在Spark独立模式下。

最佳答案

回答您的问题:


独立模式使用与Mesos和Yarn模式相同的配置变量来设置执行程序的数量。变量spark.cores.max定义了Spark上下文中使用的最大核数。默认值为infinity,因此Spark将使用群集中的所有核心。 spark.task.cpus变量定义Spark将为一个任务分配多少CPU,默认值为1。使用这两个变量,您可以定义集群中并行任务的最大数量。
创建RDD子类时,可以定义在哪些计算机上运行任务。这是在getPreferredLocations方法中定义的。但是,正如方法签名所暗示的那样,这只是一个首选项,因此,如果Spark检测到一台机器不忙,它将在该空闲机器上启动任务。但是我不知道Spark使用哪种机制来了解哪些机器处于空闲状态。为了实现局域性,我们(Stratio)决定缩小每个分区,以便任务花费更少的时间来实现局域性。
每个Spark操作的任务数量是根据RDD分区的长度来定义的。此向量是getPartitions方法的结果,如果要开发新的RDD子类,则必须重写该向量。此方法返回RDD的拆分方式,信息所在的位置和分区。当您使用(例如)联合或联接操作联接两个或多个RDD时,所得RDD的任务数就是该操作所涉及的RDD的最大任务数。例如:如果您加入具有100个任务的RDD1和具有1000个任务的RDD2,则生成的RDD的下一个操作将具有1000个任务。请注意,大量分区不一定是更多数据的同义词。


我希望这将有所帮助。

关于scheduling - 哪些因素决定了独立模式下执行程序的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25938663/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com