00:00
好,接下来呢,我们来看一下hi doop源码解析这门课程,那学习这门课程呢,还是非常有难度的哈,建议大家呢,出去这个遛个弯,呃,精神精神同时呢,回过来之后洗把脸,然后再来听这个课程,那才能这个达到一个最佳的一个效果哈。那好,那接下来我们看一下这个hi do源码当中我们要讲哪些内容哈,呃,这里面一共分为七章,第一章内容呢,是RBC的一个通讯,比如说嗯,这个主件与主件之间,它在底层是怎么通讯的?哎,这给大家介绍一下,那接下来呢,是第一章的name node启动相关源码,以及呢data node启动源码也说启动它做了哪些事儿哈,还有呢,就是as它的一个上传流程,那这里面会详细的给大家去介绍啊。再往下呢,是这个雅恩的一个工作机制啊,它的源码还有呢,迈六源码,以及呢,最后一个就是D译开动源码。这么几章内容,那好,那回头来我们先看一下这个第零章RPC通信的一个原理。
01:02
那这里面我们大数据组件呢,有as,有雅N,有MAB6S,我们快速回忆一下对应着三者之间的一个关系,好吧,嗯,这个图呢,已经放第三遍了哈,然后快速回忆一下,说102 103 104上面呢,呃,存储的对应的data node name node对吧?哎,然后他们之间啊,相互的一个工作,然后接下来呢,是这个由result manager和note manager。再往上,哎,客户端还有呢,对应的是m rab master以及map task reduce task对吧?哎这几套组成,那大家思考一个问题哈,思考一个什么问题呢。大家想一下,这个data note和name not,它们之间如何通信?Resource manager对吧?跟note manager之间如何通信?还有对应的你这个m Mr master跟resource manager他们之间的通信。这是不是每一个组件都是一个进程啊?什么叫进程?哎,可以部署在单独的一台服务器上。
02:00
对吧,那你这样他们怎么通讯呢?思考一下。是吧,你你你不好奇说这note到底,呃,发个通知name note怎么就能收到呢?是吧,诶那下面呢,我们就来解决一下这个底层它是如何来通讯的,那我们以一个呃势力代码给大家啊剖析一下好吧,那这样后期我们再看这个其他源码的时候就会非常清楚。啊,否则的话,你看后面这些源码,它都是这个服务与服务之间的一个通讯啊,跳来跳去的啊,一会儿就给你跳晕了啊。那我们先来看一下哈,呃,首先看一下需求。这是RVC。这里面有三个角色哈,一个呢叫RBC的客户端。还有一个呢,叫RPC的一个服务端,另一个呢是RPC的一个通信协议。那给大家解释一下啊,首先呢,你要想两个组件之间进行通信,是不是得有一个通讯协议啊。啊,也就是说我发个一,哎,表示说今天咱们这个下午约会啊,对吧?啊好,我发个二呢,比如说啊,表示今天下午咱们去看电影啊,发个三呢,表示下午咱们约一顿饭。
03:08
那这里面是不是得通过这个通信这个协议来进行一个提前定义好啊好,那这个接口协议呢,就是定义好的一个规范。好嘞,那么接下来他搞定之后,那就得有一个服务端。那服务端如何跟这个通信接口产生联系呢?哎,它实现了这个接口。来实现。这样可以吧,实现你这个接口之后,它就要重写里面的对应的方法,对吧,你这里面是有一个创建文件夹的方法,那我就重写你这个方法。同时,我自己还要创建一个服务。那你想你创建一个服务,准备让对方对他进行一个访问。那我是不是得告诉我的通讯服务器的地址是多少?以及我的端口号是多少,还有我用的是哪一个通信协议?这三者我是不是都得提前出装好?
04:02
对吧,好,它初始化完毕之后,是不是就相当于正常在启动等待客户端来请求啊。好,那接下来那这边呢,就是客户端,那客户端要想能够访问到这个服务器,他需要做哪些事呢。他是不是得获取到这个服务器的一个代理对象。对吧,哎,相当于是跟他这个接头人好,那这个接头人他需要具备哪些功能呢?他是不是得拿到这个服务器的地址,你说我要跟谁访问。那接下来我是不是还得拿到对方的端口号,以及对方的通信协议?这三者都拿到之后,那我是不是后面的访问的时候就容易了,哎,好那好建两个同学之后,然后在这个客户端,诶这个代理对象我调用一下创建文件夹这个方法,那好他这面调用,那这个代码在哪执行呢?记住你这面一调用代码实际呢是到这了。哎,到服务端这个方法就能把这个数据给接收到,通过这个协议吗?因为你已经实现了这个协议。
05:02
就把这数据读走了。然后你这边后面服务端就可以做后续的一些事情。这就是他最底层的一个通讯原理,那下面我们来看一下哈,那我们就来写一个代码好吧。创建一个RPC包。打开new,一个packet。这个是我们ADS之前的那个案例哈,然后在这里面,首先我们先创建一个接口。Interface对吧?哎,看我们这通信协议定义啥呢,叫RPC。Pro Co啊行吧,哎,随意定一个名字,接口协议,那接口协议里面,哎,这里面哈,必须得有一个。版本哈叫V。啊wson ID这个呢,是他协议的一个规定,必须要有,那这个呃,版本号呢,你可以任意给,这里面就给个666啊,这个表示比较顺利哈,行666,那接下来那剩下一个方法啊,抽象方法,那么我就要。
06:01
就是双方的一个通讯,我要实现什么功能,那这里面我就定一个创建文件夹的功能可以吧,Make dl4。哎,模仿官网,官网里面是不是也有个make d这个API啊,哎,那这里面就调用一下,那你创建文件夹就需要一个路径啊,那我就。哎,这样就定好了,哎,也就是说未来呢,我要调用它进行服务端与客户端的一个通讯。可以吧,好,那下面我们来写一下这个夫子。波,那叫n ner。不,这名字都随便写哈,这是负的。那服务端里面我做什么事呢?哎,首先你得实现对应的这个接口协议啊,哎,那实现RPC。这我们定义的,那重写里面的方法,好,你看这就重写了,那正常这是服务端,那这是客户端传过来的这个pass,记住哈,这是客户端朋友的pass,这个方法是在这个服务端执行。
07:00
啊,这个要理解一下哈,那理解一下我接收到这个数据之后,那我怎么写呢。服务器。接受。客户端请求可以吧,哎,那这个请求的地址呢,就pass点我给它打印出来,哎,这样就可以了,那我这个服务端我得启动服务啊,对吧,启动服务。启动服务怎么起呢?你有一个。RPC啊。然后哎呀,没有它哈,然后点点builder builder里面你看它需要一个conviction,那就new一个conviction,需要啥就给啥。然后呢,点set你可以往里面去塞了,那首先我们这里需要set一个什么呢。第一个就是它的服务器地址啊。嗯,那我们的服务器呢,是本地哈lo。
08:04
对吧,嗯,那接下来我们是不是得定义它的端口号啊,哎,那端口号呢,这个呢,你也可以,嗯,直接起就行了啊,我定义一个八八吧。要发呀。再来。我们还需要晒什么呢?大家思考一个问题。我是不是得set一下这个对应的这个通讯协议啊协议,那我们这个协议呢,就是RPC,然后它点plus。再来我还需要set一个,哎。你这边拗了一个,他其实呢,他得拗一个谁呢,拗一个自己这个server。嗯,就他一个瘦哈。创建一个实例,相当于是,然后最后呢,就是build,这样就创建好了哈,你看就是最基本的一个操作c serve。OK,那这边有个异常抛出去。那现在呢,这个服务器啊,就已经开始工作了。
09:00
五武器。开始工作。点D,那你光拗对象它不可能启动,那我来一个谁呢。点start对吧,哎,这个线程启动。这样就可了,服务端你看167开这个这样吧,嗯,先写这一步叫实现通讯接口。这是第一步对吧?哎,实验通讯接口之后,然后你重写这个对应的接口协议的方法,然后呢,这个记住它是客户端传过来的数据,然后这边接收,接收之后你可以进行后续的一个处理操作,那服务端我需要用一个服务器的对象,对吧?哎,这个server,那server里面你需要定义服务器地址,端口号以及通讯协议,还有你要用一个自己的一个实例对象。对吧,嗯,然后呢,之后这边服务器就开始启动,服务器启动之后,那下面我创建一个客户端。那我客户端要做什么事呢?
10:01
客户端要拿到这个RPC它的一个代理对吧,那这个代理怎么拿呢?记住RPC点。Get。哎,这样就能拿到一个代理对象,那你看一下这里面需要你传递哪些参数,那第一个参数就是通信协议对吧,那这个通讯协议呢,就是RPC。然后他点。OK,那接下来。再来。第二个参数是不是就这个客户端这个版本号啊,哎,这个版本号呢,刚才说了这个通讯协议里面,它是必须要有的,必须要定义哈。这是跟他这个通讯协议有关系。第二我是对吧,哎,拿它去调就可以了,那再来那它还需要哪些这个参数呢。你要连接哪台服务器的主机名称啊,对吧,那主机名称你得给过去,那这块呢,它需要的是一个I,这个net,嗯,Night,然后socket advice,对吧,需要他一个他那你就拗一个in。
11:03
对吧,需要啥就来啥,那之后这里面对应的参数,第一个服务器地址,第二个呢是端口号,那就给呗。Lo local host的,然后呢是动号,动号呢8888对吧,哎,就是你服务器的动号,然后再出来之后。你看下一个参数,下一个参数它是不是需要一个配置信息啊,CTRL加P啊就有一个。客户端,这样客户端就来了,它有异常出去。客户端对象有了。哎,有了这个对象之后,那下面我就是。客户端开始工作。OK。然后呢,这里面就是客户端点。
12:01
调用对应的方法对吧,这个方法你看啊,这个方法是不是这个通讯协议里的,哎,我这么一调,我把这法问题呢,把对应的我要干什么事,我要创建一个input目录。我这么一执行,对方就能够收到了,你看因为我用的是这个服务端的这个代理对象,对吧?哎,相当于是服务端一个代理,那之后这个方法就过来了。那是不是这么走的呢?那接下来我们来验证一下好吧,呃,那首先呢,我们先启动服务端。掀起福气。服务器你看啊,服务器已经开始工作了,对吧?哎,开始工作,开始工作之后,你看这是一个控制台命令啊,你打一下GPS。看到了什么?这里面是不是起了一个n n server啊。这就类似于我们之前启动name node,启动data node是不是都有一个进程号?哎,道理是一样的哈,道理一样的,那接下来我客户端对它进行访问。好看好了。看服务端开始工作了吧,那看一看服务端有没有接收到。
13:03
来,你看服务器接收到了客户端的请求,是不是就相当于执行了这段代码?然后这个路径是不是input。这样客户端和服务端之间就已经可以通讯了,那这个异常你不用管啊,不用管,然后你再来执行一下,你再执行一下客户端。那你看。说这边又收到了,哎,你每发送一次请求,他就能收到啊相关的一些数据,OK吧,这个呢,就是这个RPC底层最原始的一个啊原理,那后面呢,我们在看源码的时候,会大量的看到这种,哎,这个呃,客户端与服务端之间的一个通讯。OK吧,行。
我来说两句