00:00
好,接下来我们来看一下盐的工作机制,你说它底层是怎么运行的,那这是一道非常重要的面试题啊,在面试的时候呢,呃,被问到的概率非常高,所以说大家要认真听,来看一下。首先来看两个角色,一个呢是运行的job m Mr,另一边呢是雅安的重要角色resource manager,那么他们两个之间马上要产生点爱恨情仇。是吧,哎,来看一下啊啊,我在这个命令行上说执行了一个WC的价。那么这个WC点程序的入口方法走到最后一行的时候是一个job.wait for。那在这里面是不是就会创建一个雅安runner,本地模式的时候是local runner。对吧,哎,产生它之后,他干了一件什么事呢?他跟这个集群说,我要运行一个application,比如说运行个应用。那这个这个老大说行没问题啊,你可以这个提交那什么哎,你按照我的要求,把你要提交的这个job吧,放到这个集群路径上。
01:08
那这个job他说那我我放啥呢?哎,他放的是有三样东西,哪三样东西分别是对应的切片碳卖lo和架包。那都有什么用啊,这三样东西。你像那个切片,未来可以控制开启多少个ma。那我这个XML呢,未来可以控制我这个任务,要按照我这个参数的配置进行运行,对吧,那这个价包那就是程序代码,那必须得有。OK,行,那提交完这三样之后。这个job说了,哥们儿,我得申请运行我这个job的老大application master资源我已经给你贴完了。那这会产生一个什么呢?在resource manager内部就会产生一个任务。对吧,来形成一个任务,那好,那思考一下,我这是一个客户端,我提交了一个任务,对吧,产生了那别别的地方还有客户端呢,有可能还会产生对应的任务。
02:07
对吧,啊,再来一个任务,再来任务,有可能会有很多任务。那怎么办?哎,不管你有多少个任务,我会把你放到一个任务队列里面。哎,一个一个往后放,往上放,往上放。对吧,哎,默认的是一个熔断造器,后面我们说啊好,放到这里面之后,那放到这里面,那这里有一个note manager,它这个资源呢,比较闲。那他就会把这个当前这个任务给领走。哎,领走你这个任务,好,那领走任务之后,他第一时间干了一件什么事呢?先创建容器。因为任何任务的执行都是在容器里面执行,这个容器里面有对应的CPU啊,网络资源,磁盘O这些内容。好,那他在这里面启动了一个Mr master。这么一个进程。启动完它之后,它会干什么事儿呢?他会上这个集群资源的路径上去读一样东西。
03:03
是不切片呢,哎,MRP拿到这个切片信息之后,他要跟这个集群再次申请。要运行对应的map test,那一看假如说啊,这个切片是两个,那我要开启几个map test,是不是开启两个map test,哎,对,那他就跟他申请要开启两个map test,那这两个map task,那有可能你看我这里是放了两个no manager节点。他有没有可能说这两个容器都在一个节点上?没问题吧,哎,记住哈,只是我这么画,其实是这两个容器是有可能在一个节点上的,没问题。因为他们时间没有相互影响,好那这个为了大家这个清楚的去看啊,那我放了两个呢,在这啊,别产生误解。那他把这个任务领走之后,仍然是先创建容器。对应的CPURAM啊,还有加包都拷贝过来,拷贝过来之后,那接下来由这个IP,这个mrp master发起这个启动命令。
04:04
启动啥呀?是不是启动你对应的map task开始运行代码了,那这时候就会开启两个进程。雅安。好,那开始运行,那map task运行结束之后,是不是就是把数据按照分区持久化到磁盘呢?那这是零号分区数据,一号分区数据,零号分区数据一号分区数据。记账完了。那计算完之后谁知道?是吧?Mr master,他知道我是否计算完了。他知道之后,他会正常情况下,这里面会再次跟这个集群申请。申请什么申请运行map啊,这个reduce test。啊,假如说这里两个分区,那我就开启两个reduce text。那开启之前仍然是先开对应的容器,在容器里面启动。那radio text对应的进程仍然是ya ya。这是reduce task开始执行,那reduce task执行完毕之后。
05:03
这地方。你程序都执行完了,我这里面的资源是不是就得释放掉了,那由这个I master跟这个or manager说,老大,我这边任务已经运行完毕了啊,你把我这些小弟全部释放。那程序就结束了,那这就是整个的一个雅安工作机制。啊,还是比较简单的哈,你可以稍微过来对吧,两个呃,一个是job啊运行的job,一个是这个result manager,那他俩呢,进行对话,说我要运行一个任务啊,说没问题,那我给你一个路径,那你把你要提交的内容放过来吧,那放三样东西切片才卖加包,那放完之后他立即跟他申请,说哥们我提交完了。啊,那我得运行我这个mrb master,他说没问题啊,你现在这个排队吧,好,那排到它之后,正好这个note manager有资源把它领走了。那零总呢,他要开始运行任务之前,先启动这个容器,诶在容器里面创建了MRMR。那它启动之后,立即去读这个路径上的切片信息啊,一看切片啊,有两个切片。
06:05
啊,那两个切片,我就开启对应的两个。容器container对吧,那这个那把任务领走,领走之后由这个0MASTER,这个m mrp master发起命令,说我程序开始运行了啊开始运行,那map开始工作。那工作完毕之后,他把数据按照分区持久化到磁盘。那等待资源拉取,那这时候呢,仍然是m Mr master,他来统一的调度申请资源,来申请到这两个角色。那开始执行test对吧?执行完毕之后要告诉老大说我已经执行完了,你把我这些资源全部释放,包括他自己都得释放掉。这就完了。
我来说两句