00:00
接下来呢,是5.6任务的推测执行,这个推测执行啊呃,包括上一个这个资源调度器,这两个呢都是。你在面试过程当中的一个宝典啊,杀手,杀手锏。一旦这个遇到受挫的时候,咔咔给他说一说这个资源调度器和任务的推测执行。那你的这个分数就立刻就上来了啊。在他心目中的印象会非常非常好。啊,因为这个是目前为止应该是其他地方都没有讲过的。而且。这个是企业老师,应该是当前是美团。的一个老师啊。发给我的资料,后来整理的哈。我给你看一看啊,这个任务推车执行啊,非常重要,面试非常重要。再一个,作业完成时间取决于最慢的任务完成时间。这没问题吧,啊也说你班的这个成绩。就是最差的,就取决于里边最后一名啊。比如说那最后一名他的分数提高了,那就再往上放,再上高,相当于是一个木桶,原理是吧,哎。
01:05
保证所有的任务都完成,才算完成。再说,一个作业由若干个map任务和任务构成。因为硬件老化。软件bug。某些任务呢,可能运行非常缓慢。就是在咱班,比如说咱们所有的电脑集连在一起跑个任务,那最后最慢执行完的肯定是。会了对吧。啊,因为它那个自己又不检点啊,没事看这看那啊,导致自己电脑呢。读啥的啊,所以说拉低了这个整个这个运行照的一个时间啊。那么今天是个系统中99%的map任务都完成了。只有少数几个map吧,老是进洞。啊,就是会他总到他那。就卡住。啊,那怎么办呢?他不行嘛,对吧,他不行他就骂嘛。
02:02
那不行,总得有人行吧,对吧,他不行,可以班长嘛,班长行。来看。发现拖后腿的任务。啊,比如某个任务的运行速度慢于任务的平均速度啊,那就会为拖腿任务启动一个备份任务同时运行。谁先运循环,则采用谁的结果。超你不行,那你就下去呗啊。你在你接着跑你的,但是呢,这时候呢,班长上了。家长,现在电脑是超级无比的快。咔,把你的任务完成完了,那最终呢,取得结果呢是吧?班长把媳妇领到家了啊。行。那下面呢,是这个执行推测任务的一个前提。那这个推车任务就是说原来有慢的任务没跑完。啊,但是呢,我们觉得很慢,那这时候我并不把他杀死,再开一个备份任务继续跑啊,也许呢,比他跑的更快一些。
03:00
那是不是这个任务,就只要这个任务没跑完,我就立刻就开这个。飞车执行任务呢?是的哈,是有这样一个情况。啊,比如说每一个task只能有一个备份任务,这没问题吧,哎。就是会超呢,他只能有一个备份的人啊来。在哪?只能是班长对吧。那个当前job已完成必须不小于。能理解吗?别人的这个任务刚开起来,正在这个预算呢,还没启动呢。然后你就咔又给人拍一个卫生任务是吧。会上还得个准备工作吧,是吧,还得预热一下啊。来个前奏啥的,在那等着呢,然后这时候班长他说你你不行,你下去我来。这不行,这不合适啊,这肯定不合适啊,所以说给他个机会5%。了。之后我。那下面呢,开启推测执行参数的设置,那是。Map sad。
04:01
这个配置信息在文件中呢,是默认是打开的,比如说推测执行啊,这个功能呢是默认是打。开的是。啊,可以自己看啊,这都是。那他打开的那不能启动推荐任务的情况,什么情况呢。债务间存在严重的负载倾斜。呃,比如说哈,这个是map阶段N多和map阶段,阶段呢有三个,一人三个。分给会超的活呢。没那么多,10万吧。呃,班长。然后这个是还有谁呢。啊,世强对吧,世强一个。那他俩本身干的活就少对吧?啊干的活少,然后呢,你想给辉超办一个这个备份任务。他10万吧。这时又开一个10万吧。那你。本身就说明你这复制这个数据已经倾斜了啊。
05:03
的分配就不合理。那你又开了一个大的任务,两个大的任务同时跑。快不了。遇到这种情况不要开。另一种什么呢?是这种特殊任务,比如说像数据库中写数据。这就没法拍了吧?你写出去,你之前这个任务写了一遍。点到数据库里了,那你又开一个备份任务,还往里去写。所以说这两种情况是不允许的啊。那下面呢,我们详细的说一下这个推测执行的算法原理。如果说你在面试过程中,你咔咔咔把推测执行的串码原理在黑板上给。画出来。那直接你就屌爆了啊,你就可以腰板挺着倍儿直是吧,嗯,25K,我25K不来。就可以这样了。否则的话就是。那22.5K是吧,我也去。
06:00
这是不一样的啊。假设某一时刻。任务T也是一个job啊,它执行的进度呢,是这个没问题吧啊。每个进度则可通过一定的算法推测出该任务最终完成的。你看啊,呃,你这个某一个任务,他执行的进度,比如说是10%,执行了10%用了五分钟。如果按照这种速度下去的话,多长时间能结束?是不是除以它就完了,是不是除以它呀,相当于总时间乘以它等于五分钟,那五分钟除以它就掉下来了。不着急啊,下面我们还有。那另一方面,如果此刻为该任务备份一启动一个备份任务。时候又开了一个。只要可推断出他可能完成的时刻是。
07:03
这个暗的一撇。于是下面有这么几个公式啊啊。我把之前你们那个给调过来一下啊。什么叫做呢?推测运行时间。比如。你推测运行这个任务需要多长时间?怎么推呢?启动的时候你知道。什么时候开始跑的,你肯定知道,当前的时刻你也知道。对吧,你减去它,哎一算运行了六秒钟。但是这秒钟呢,你看你的这个进度条呢,完成了任务的10%。那时候六秒一除以这个10%。It now。等于说60秒之后啊。我在一共运行60秒,我就能把这任务完成。这没问题吧?那下面是。推测执行完的时刻。一个是时刻,一个是时间,能区分开吗?这个时间相当于是不是总的这个时间时刻是某一点呢。
08:02
那一个点啊。那这个点怎么算呢?你原来的这个启任务启动时刻是不是零啊。零嘛啊零,那我一推测你要运行。60秒。不加一起,那就说你在60。这个时刻能把这个任务运行啊,运行完。前面呢是算一下你这个总任务啊。能运行多长时间,定完时间之后说运行60 60秒,那我问你这个启动时刻,如果是十。变成16了吧。那这个是多少?是不是70啊,一加就完了呗,啊,就这么简单啊,七十十克。那下面呢,来一个备份任务啊,在这时候呢,启动了一个备份任务。看他啥时候能完成。那你开这个备份任务,当前时刻是不是都是六啊啊,当前时刻六,那么后面这个时间是什么呢?是运行完成任务的一个平均时间。
09:06
也就是说,你其他任务是不是都已经完成了,就会还是在等着呢?哎,其他人物,你比如说有其他人剩下的他有一个平均时间可。平均完成他的任务是十秒钟。两加上当前这个时刻那。啊,那也是我要开一个备份任务的话,我按照大家的一个平均值。来算的话,那我在十六十克我就能装。一看你这个是十六十个,我要开个备份任务。当前要是要回超,一直在这坚持,那得到60这个时刻。是他提前了。那我就有必要开吧,啊这意思啊啊。那么这个MR呢,总是选择。比如说这个时间按time。减去这个。减去这个推测执行的时间差值最大的任务未知其中备份任务。你说你这个哈,你再小一点,你说十,那他俩差的是50吧,那你要说五。
10:04
看的是是更大了,嗯。差值越大,是不是相当于这个这个推测完成的任务,这个备份任务完成越快啊。为了防止大量任务同时启动备份任务造成资源的浪费。MR呢为每个作业设置了同时启动备份任务数的上限。这个不难理解吧。你想想,你要是每个任务你都给他开一个备份任务,那相当于整个任务是不是乘以零个二啊。那这个效率那。不会生啊。等低啊这个。这也要有一个任务的上限啊。并不会把所有的任务都来一个。这个任务。那详细说一下这个推断题的算法啊,它的原理。现在执行机制呢,实际上采用了经典的优化算法,什么优化算法呢?
11:00
空间换。空间什么的。这个磁盘的什么各种磁盘,这个空间内存的等等啊,啊这种东西。可以用大量的这种备份,你原来跑这一个任务会常在跑,那下面呢,我再给你来一个。完全支援的二倍吧。资源的二倍,那说空间有很多。它同时启动多个相同任务,处理相同的数据。并让这些任务竞争,以缩短数据的处理时间。谁快我就选谁的。为快不破啊,虽然这种方法需要占用更多的计算资源。在集群资源紧缺的情况下。应合理使用改。资源不够的情况下。可以把这个推车执行关闭掉。如果你的服务器很多啊,很多,但是我就想快速的将这个任务完成,那这时候这个推特执行这个任务就有必要去开。
12:00
这是争取用在多用少量资源的情况下减少作业的计算。我们求的就是一个快。对吧。也达到会商这个速度。一快。
我来说两句