scala – Apache Spark – spark中的内部作业调度程序如何定义用
我很抱歉在这里成为一个小将军,但我对内部工作安排如何在火花中工作感到有些困惑.从文档
here我得到它是Hadoop Fair Scheduler的某种实现.
我无法理解谁是这里的用户(是Linux用户,hadoop用户,火花客户端?).我也无法理解这里定义的池是如何定义的.例如,在我的hadoop集群中,我已将资源分配给两个不同的池(让我们称之为团队1和团队2).但是在spark集群中,不同的池和它们中的用户会实例化自己的spark上下文吗?这再次让我质疑当我将属性设置为spark.scheduler.pool时我会传递哪些参数. 我基本了解了驱动程序如何实例化spark上下文,然后将它们分成任务和作业.可能我完全忽略了这一点,但我真的很想了解Spark的内部调度程序如何在行动,任务和工作的背景下工作 解决方法
默认情况下,spark与FIFO调度程序一起工作,其中作业以FIFO方式执行.
但是如果您的群集在YARN上,YARN具有可插拔的调度程序,则意味着在YARN中您可以选择调度程序.如果您正在使用由CDH分发的YARN,您将通过deafult获得FAIR调度程序,但您也可以使用容量调度程序. 如果您使用的是由HDP分发的YARN,您将默认使用CAPACITY调度程序,如果需要,您可以移至FAIR. 调度程序如何与spark一起使用? 我假设你在YARN上有你的火花星团. 当您在spark中提交作业时,它首先会击中您的资源管理器.现在,您的资源管理器负责所有调度和分配资源.所以它与在Hadoop中提交作业的基本相同. 调度程序如何工作? 公平调度是一种为工作分配资源的方法,使得所有工作平均在一段时间内获得相等的资源份额.当单个作业正在运行时,该作业将使用整个群集.提交其他作业时,释放的任务插槽将分配给新作业,以便每个作业获得大致相同的CPU时间(使用抢占可以杀死所有已使用的任务).与构成作业队列的默认Hadoop调度程序(FIFO)不同,这可以在合理的时间内完成短作业,同时不会使长作业挨饿.它也是在多个用户之间共享群集的合理方式.最后,公平共享还可以与作业优先级一起使用 – 优先级用作权重来确定每个作业应该获得的总计算时间的比例. CapacityScheduler旨在允许共享大型群集,同时为每个组织提供最低容量保证.中心思想是Hadoop Map-Reduce集群中的可用资源在多个组织之间进行分区,这些组织根据计算需求共同为集群提供资金.还有一个额外的好处是,组织可以访问其他人未使用的任何剩余容量.这为组织提供了具有成本效益的弹性. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |