00:00
好,接下来呢,我们进入到创建环节对吧?哎,创建环节首先你要做一件事是把这个依赖啊给添加齐了,那我们除了导这个hi多宝客户端,你要还要导一下hi多宝ADPS,以及呢还a DPS client,哎,这三个依赖给它添加上就OK了哈,那行,那我们接下来创建的时候啊,我们老规矩哈,先把我们要做的事接出来。这是一个,然后接下来我们把我们第一件要做的事儿啊,再给它截出来,第一件要做的事呢,就是这个客户端要跟name node进行一个申请,对吧?哎,申请什么申请我要上传一个文件。那好,那下面我们来看,那这里面首先看一下这个代码。上传的代码简不简单呢?FS create创建一个路径,哎,返回一个流,然后呢,我通过这个流向这个路径上进行写数据,哎,就这么一行两行代码啊,那这个我就不写了啊,我提前给大家已经写好了啊,就在这儿呢,创建路径,然后写数据,那我们先看一下这个创建它干了哪些事儿好吧。
01:01
点开。点开之后,那这里面仍然是create,那就点呗,啊继续create create啊记住哈,你点代码之前,你首先要想着你要干点什么事,你要干的事呢,是客户端要跟name note进行通讯,那通讯的时候是不是通过RPC把这个创建的请求发送给对方啊,对吧?哎,那你就遵循这原则,那你就看呗,往下走。啊,Create对吧,继续create,然后呢,到这儿之后是一个抽象方法,那你得回退啊,回退之后,然后ctrl out加B。那找一下我们当前是什么文件系统,是不是分布式文件系统啊,所以说你就点它啊分布式文件系统,那到这儿之后呢,仍然点击create创建啊创建,那这样呢,就来到了这个位置啊,那这个位置呢,你继续看啊,大概看一下啊干了什么事啊,说用了一个file system,然后看这块。有一个do do号里面仍然有一个create,那么再点这个create进行创建。创建,然后还有创建,那继续啊,这个代码很深啊,再找找这。
02:01
好,到这儿,到这儿之后往下看,这里面有一个嗯,输出流,然后new一个stream for great。哎,也说流的一个创建,那继续呗创建。创建,然后再往下走,嗯,前面看,嗯看一下,看到这这有一个DFS客户端name node,然后create,哎这块呢,就是相当于这个客户端。代码向这个name node发送RPC请求。对吧,那到底是不是呢?那我们来看一下啊,你按这个ctrl out加B。哎,这里面你看这谁name node server熟悉吗?他是不是name note的一个服务啊,那现在相当于我客户端跟这个服务端进行一个通讯,那好打开,那这样我是就来到了name note这面的创建了。那接下来的操作是不是都是在name note上一个操作,好,那在name note操作我要干什么事儿,记住我是不是要进行一个,哎,往它目录数上添加对应的文件呢,文件目录嘛,对不对,哎,那好,那往下添加呢,你看他怎么添加的呗,往下找说这里面校验NN啊是否启动,然后往下啊往下看。
03:12
嗯,这是缓存相关的信息,跟我们没关系,然后往这走说name not start file啊,我们操作的就是一个file,那是不是这个方法跟我们有关系呢?点进去看。那再往下走,哎,这这些内容,哎,仍然是start file int,那继续走呗,还start,那往下看,哎往下看,那这一段代码当中啊,又涉及到哪些内容呢?你看这大段的是又一个什么啊,这个a band builder对吧?啊,没什么影响,然后再往下看,好像这块也没什么,跟我们没什么关系啊,往下走啊,这个I know的什么pass啊,Right啊,没关系,继续往下轴,继续往下轴。嗯,往下走。嗯,走。走走到这看到吗?哎,这里面有一个start fair啊还是start,我什么一路start来的,哎,那继续往下点。
04:00
那看他到底start里面干了什么事,那往下看呗,那继续往下看,往下找。呃,往下找啊找一下哈。我们从上往下。找一下。首先看一下啊,什么all right contains,往下看一下这段,这段在。说file already exist exception,也就说如果你这你上传这个路径,如果已经存在,是不是直接给你抛异常啊,那你看这块前面这个一务分支,如果说你这个传入的参数是可以覆盖的,是不是就不抛异常了,哎,所以说它会判断你这个路径是否存在,那是否存在,如果你是可以覆盖的话,那不抛异常,不是不可以的话,那直接就跑异常了啊,这个代码稍微了解一下,那再往下看,那看他干什么事了呢。往下走,往下走。Set fire start new file。然后呢?这地方有一个I的file,是不是就添加数啊,添加这个文件啊,那你看看他怎么添加的,诶走到这里面进。
05:04
进来之后呢,我们来看一下哈,啊,别着急往下走哎,看写这个数据块啊,写这个策略啊,写存储策略,然后再往下走。再往下你有一个I know的file啊,创建一个文件对不对,哎,创建文件,然后这里面有一个ADD I know的是吧,这些,那你看一下它到底怎么爱这个I know的。这不就是I的这个呃,目录数吗?对吧,哎,其实这个I I know呢,就来到这个位置。在这个I not下面,它是根据你以前的这个目录目录结构,然后往选择一个节点往上面去添加对应的内容,对吧,你是根目录下的input,那我就添加到这个,呃,根目录数下面啊,放一个这个input这个路径啊,就是这一套过程哈,所以说你看到这个II动的方法,那就是整个这套流程啊,这个创建过程已经完成了。OK吧,啊这就是嗯第一步,那第一步之后呢,我们回来哈,回退,那现在我们要回退到哪呢?我是不是要回退到这个客户端啊,再回来哈,从这边我这边添加完之后,我就开始往回走了。
06:06
往回走,往回走。现在这个位置啊,这个位置还记得吗?那就给你回退的远一点吧,啊,然后我们再重新往里进啊好往回走对吧,那这边呢,是create也都给你退回来。往下到这个位置。嗯,这个是再往前吧,再往前推。再往前退,退到这个根儿上。那根上的话,我就来到这儿得了,哎,我们又回来啊,回来之后刚才呢,我们是这个整个这个通讯请求已经结束了,那下面我们再来进来,再进来干什么事儿呢?哎,除了刚才这个,呃,他进行一个跟内蒙note通讯之外,看他又干了什么事儿啊,你再进一遍再进。进到这之后呢,再往里走对吧?哎,这是抽象的,那就回退回退,然后ctrl out加B。加B的话呢,来到这个分布式文件系统,然后创建对吧,嗯,来到这,然后我们上次呢,是这个是不是点击它呀,嗯,点击它的一个创建发送请求。
07:06
对吧,然后呢,继续创建。然后继续创建创建。然后这是吧,你有一个stream for create啊啊点击这里面,那点击到这里面之后,然后它进行了一个,诶调用的这个方法,看到了吧,调用这个方法进行一个发送啊,你说呃,发送请求我要跟内蒙诺进行一个创建,那创建回来之后,他又干了什么事呢?你往下看。这里面他new了一个DFS output stream。啊,也就是说我这边呢,已经这个得到内no的一个请求,肯这个同意之后,那我下面要做的是不是得创建一个输出流啊,因为我有了这个输出流,我才能往外写呀。对吧,哎,那他就干这点事,那好,那就创建一个输出流。那过来,那过来之后呢,这里面有一个compute packet啊,Truck size啊,咱说了有packet有truck对吧,还有truck sum啊这么几个单位,那其实呢,这下面呢,就是哎相关的这几个啊名词你先给它有个印象哈,啊这里面有。
08:06
你看。说呀,有这个package size,那这个package size怎么来的呢?它是来源于你这个truck size乘以这个truck per packet啊,你有多少个packet,然后乘以这个pack size。哎,是这么一个单位啊,那你稍微记一下这个truck sum4个字节,Truck呢,五百五百一十二,然后PACKON64,然后BLACK128啊,稍微有个印象就行,后面呢,我们还会啊,去说的哈,别着急,那回来。行。走走到这儿啊,那你创建了一个输出流,那接下来这个输出流是不是进行了一个start呀。对吧,哎,Start,那start是干了什么事呢。啊,说这个get stream streamer它进行了一个start,那好,那streamer,那你点start啊,发现这是一个线程,那好,那你就直接能感受到,那这个get stream,它这个返回值,它是一个线程。对吧,然后并码它启动了,那好,那你来到这儿之后,然后CTRLFR。
09:04
那这个线程不就找到了吗?那现在要看代码数据看这里面了。那看这个,呃,这个data使这模它启动之后,它干了什么事,那这里就非常重要了哈,你看往下走它干了什么事呢。来到这个位置。这里面有一个date queen with。相当于是我准备了一个数据队列,然后呢,主摄在这儿了。它为什么主摄在这儿了呢?因为它目前这里面是不是空的队列,大家不知道这个对这个概念熟不熟悉啊,队列的话呢,相当于是这样。啊,用来存数了,你可以往这里面存,存存存存,然后队列的先进先出嘛,你先进来的数据,那我先出去对吧,按这样流程,那你没有数据的话,我说等待等待接收数据啊,啊,你什么时候来,我就什么时候帮你去存。哎,是这样一套过程哈,行,那这里面啊,这个队列目前是主设的,相当于我们是不创建了一个data streamer这个线程启动,然后它进行一个wait等待。对吧,哎,好,那这整个这一套流程啊,也说这个,呃,准备工作已经做好了,也就可瑞的相关的事情OK了,那接下来我们再往下走的话,就回到这儿准备进行往出写。
我来说两句