00:00
好,下面呢,我们来跟一遍这个还有一步的啊,这里面的切片源码解析啊,我们来看一下啊,首先来到这儿。再打个点右键。你爸爸这些。进来之后呢,他走到这儿,走到这儿之后往下进来。直接选入运行吧,运行。运行就来到了这个rightli啊,来到这,来到这之后呢,往里进往进来。进来之后呢,要进入到这个方法里面去哈,往下。下抬轴进来。进来之后,这里面有获取配置信息啊,往下走不管再走走。走到这个位置啊,要进到这个源码里面叫get spli啊。获取切片信息。见。进来对,这个才是我们正常要看到的啊,进到这之后往下走走一行。
01:05
找到这之后,这里面有个mini set有个ma是吧?啊有个最大值和最小值,那我们看一看这个最大值最小值是多少。是不是一呀。对吧啊,你这个右键O会吧,啊,我会查看啊,会查看这个值,那这个watch呢,它是一啊,它是一,那这个max是多少呢。来,我们进去看一眼,进。来到这儿,来到这儿。这里是叫呃,Get,这有一个spli,这是不是获取这个值啊。啊,这个值是多少呢。你没设置默认的。他不设置,他要是如果没有设置这个值。这里面是吧,Default的Y,它就是默认的值,默认的值谁呢,是它。那他是多少呢。
02:03
哎,浪的最大值啊,浪的最大值。这个上面这就可以干掉了哈,这个是浪的最大值,放在这直接往下走。一个是一,刚才看那个是一啊,这个是最大值出来,那你说它是一,它是浪的最大值。那往下这边是创建了一个镜片的。集合往下。这是F都是初始化,相当于目前都还没有值啊,都还没有值,诶这个有值了啊,这是获取到了,那这个值呢是。hello.t对吧?啊,那下面这个文件的副本数啊,块大小啊等等,创建的时间呢,哎,所有者呀,分组啊,是不是一堆信息啊,哎,都在这儿。那往下走,那么接下来他就要循环便利,你这个文件夹当中到底有多少个文件,一个一个来处理。
03:00
这不是file啊,所有文件嘛,哎,那这是取出其中一个文件,我们来往下走下。下下,那获取这个文件的长度86个字节是吧,往下走。到这儿。这有一个方法叫isli,啥意思?哎,是否可切割啊,是否可切割,这是这么一个概念哈,呃,正常情况下这么你的,比如说有2G的数据。它是可以切割的,可以切割成128兆一块,128兆一块。有些这个数据类型它是不允许切割的,比如说你把这个文件要是压缩了。有一些压缩它是支持这个切割的,有一些它就不支持。那不吃怎么办呢?他就不让你这个切割啊。这个要注意哈,好,那看看它是否可以切割不进。进来之后你会看到的这地方叫compy,其实就是一个编解码的一个要求啊,看几种解码方式支不支持切割下。
04:11
当前这呢没有值哈啊,如果等于那就反数啊,那就说允许切割,没有任何的这个编解码,那它就是可以切割的啊。有一些也不一定说非得有他就不能。切割啊,有一些是可以的往下走。后面我们讲加速的时候再说哈。呃,往下走下那看一看,这个地方是获取文件块的大小。负负大小默认是多少?128是吧。看。你们三观?使劲骗你们,明明说128,那看看这是多少?这么好吗?这都算出来了。我怎么我怎么没出来,来算一下,呃,3355。
05:01
试试。三二除以1024。再除以1024等于。诶,既然是32兆老师您骗我啊,这怎么32兆明明128。这个原因是什么呢?这个是当前运行,是不是local?本地行啊哎,本地运行它会认为你这个机器啊,硬件啊,各方面配置啊是不行的啊,所以说呢,它给你这个切块呢,就是32兆一块,如果你把它放在雅安集群上,它就会是128兆一块。老师,那你该说了,老师你不对啊,你这之前说有个64道啊,是怎么回事啊。64兆是老版本,Hi豆1.x啊,HI2点X128啊,本地运行是32兆。手机了。这几个清楚啊,要清楚啊。
06:01
这个说明你看过源码是吧?啊,你跟面试官在聊的时候是不是,诶本地32中。直接面试官就服了是吧,是吗?你说你没看吗?来,我给你bug一下啊,现场来。直接你让他现场给他你bug搞定到这儿,他肯定就服了啊。真的。可以吃我的,吃我的试一把。好,那这个是64兆啊,是1.x的啊,128呢,是这个2.x的,32兆呢,是这个本地运行哈,一定要区分出这几个概念。那我们下面往下走。哎,我走,哎呀。后悔了。这是不是切片大小啊,那他这个切片大小怎么来的呢?啊,也没关系啊,我进的直不往离你八直接进去,你看一下船第一个是块吧。这是是多少。是不传进来的时候是一啊啊一,那这个呢。浪价值哈,好进到这里看一下。
07:00
这是有这么一个公司啊。那你看一下这个公司怎么算的。怎么说面积是多少?一啊一它是一。那这个mark size呢,最大值是吧,点Mars。那这个BLOCK3是多少?32兆对吧?32兆那你算吧,首先是mini里面的最小值,那最小值谁最小值。32兆,那取完30之后,那这里面的最大值,最大值是谁?就排三证了,哎,所以说它这个默认的是这个块的大小就等于。经典的大小。那现在简单的问大家个问题,我想让这个切片的大小大于32道,比如说40道怎么。设置谁。
08:00
哎,这个那是不是得提高这个mini t,把它提高到40吧,啊40兆,那么又来了,我想把这个切片大小设置成20兆。我。是不是改它呀啊,取它容当最小的,我把它改成20兆之后大于mini。是这意思啊,哎,这个要注意哈。如何来设置?那我们返回来。到这儿啊,还是到这儿哈,就补到这儿了,那这个呢是长度啊。下。86个字节对吧?啊,往下走这一行代码也很关键。看一下啊。这个呢,是你当前这个长度。除以谁的?切片大小吧,啊,切片大小啊,然后大于。1.1倍。你这个长度,比如说当前长度是86之节除以32兆。
09:02
那会不会大于1.1倍呢?肯定不会,对不对啊,肯定不会。如果说当前。是。33兆。先先进来啊,你看一下这里面他如果说大于他之后,他干了什么事。它是不是添加了一个相的切片呢?是不是分了一片啊,啊分了一片,如果没大于它是不是就不写了。啊是这个意思啊,这里面,那你现在比如说我这一往下,它直接就跨过来了啊,因为目前86除以它是不是小于它呀。这里面要记住一件什么事呢?我问你一个问题,如果说你是33兆,还用不用切片?为什么?你33兆除以这个32等于多少?33除以32等于。1.03大不大于1.1倍,不大于是吧,哎,不大于它就不能接好你看一下往下走下。
10:05
是不是直接跳过呀,啊直接跳过啊。那再往下。这个呢,就是把这个芯片信息啊,整个的一个赋值哈。看是不是今天习就来了啊,这不例次是不是这里面有了一块了吧?啊有了一块好,那再往下走。下。下。回到最上面循环看啊,再往上走了啊,要回到这。他是不是按照文件一个一个来循环呢。哎,那时候切片的时候,是不是也是针对一个一个的独立文件来切啊,是不是上次我说的那个,不管你这个文件是十兆还是300兆,它是不是只对你这一个文件。写啊,他没有把这两个文件加在一起写吧。啊,这个是它的特点啊。啊,我跟你说一会儿,他跟我们后面讲的这个。
11:00
就不太一样。那个都要往下降。加完之后再来。那这个呢,是没有加一个一个独立文件来切啊好那。再来,没有文件了,出出出来。这个就是整个这个今天的。流程哈啊,核心关键,所以说在面试官问你的时候,你读没读过源码啊,怎么能证明啊,怎么。首先呢,是这么一个公式。呃,这个是最大值啊,这最大值还不算是。这个吧,我已经站出来了。是不是这个公式啊。如何算这个切片的大小啊,是它,然后还有一个能证明你是看过源码是什么呢。这个地方一。1.1倍。啊,之前在出面试题的时候有这么一个问题。呃,你这个是33兆有个文件。啊,不是132,不是32啊,这它那个出的是129刀。
12:01
切几块?存的时候存几块。啊,这是有个概念啊,存的时候存几块。两块是不是成两块,两块切的时候切片切几块。啊,我清楚两天。怎么接?是不是切一片呐?这是两个呢,你看有些现在有了。存存的时候是物理上的一个存储啊,啊,物理上存储是不是只有只按这个字节的大小,只要到128兆,是不是就一块啊。哎,那是不是分成两块没毛病吧。切的时候是按切片的。那这块你是不是切片信息啊,切片信息一除以它啊,这个你是129除以一百二八的集群吧,啊,那大于大于1.1倍啊。不大于吧,不大于是不是就不切啊,那是不是就一片了。啊,所以这道题就是考你这块,你有没有真正的读过页码。
13:05
这这这几这两节课的作用就在这儿啊。啊,费了半天劲啊,就在这儿啊,真正的开发怎么样啊?他。还起不到太大的作用。下来OK,那这个呢,是这个切片的源码哈,那我们把这个源码的一个流程。啊,再给大家走一遍。啊,我已经写出来了哈,你可以看一下对照我们的源码对不对。首先呢,程序先找到你存储的这个文件的路径。在这里面干什么呢?他说是便利啊,处理目录中的每一个文件,就刚才有一个files。S file,然后对它进行一个方循环吧,啊,各种方循环一个一个文件来遍历啊。好便利的时候首先便利的,比如说第一个文件生成点TT啊。之后呢,是要获取这个文件大小。我这文件大小是。86啊。
14:01
好,那再往下。计算这个切片的大小啊,这个切片大小是不是跟那个块大小去比较了一下。再往下。那也就是这个公式,这个公式呢,你是要。怎么算的,那默认值呢是128兆,本地模式呢是32兆。好,我们再往下,那默认情况下呢,切片大小等于一块大小,就这么来的。好开始切啊切第一片,我这个呢,这个数据比较大哈,我这个是按300兆来的是吧。之前这个是按300兆来的啊。那比如说300张,那他第一次循环切片零到128啊。第二片呢是128~256,第三片就是剩下的。每次切片时呢,都要判断切完剩下的部分是否大于块的。点一倍,这个很关键啊,不大于1.1倍就划分成一块。再往下,将切片信息写到一个切片规划文件中。
15:05
之后呢,整个切片的核心流程就在这里面完成了啊。那这里面记录了就是最终的你的所有的芯片信息,每个切片读多长?那就在这里面,比如说起始位置长度。那最后呢,是提交芯片规划文件到雅安上啊,刚才我们说提交本地那个相应的提交路径啊,啊上传里面啊,这里面然后由谁呢,有雅安上的叫Mr master啊,根据切片规划文件计算出map test。至于开几个map task啊,就由他来具体的来操作,那他根据呢,根据的就是切片的信息哈。这就是整个这个源码的过程,如果那个源码你看不太懂,你可以看这个总结的哈,总的这个。看一看这个。
16:01
出来了。出来了就。你看这呢,斯普利斯这里面就是记录了你到底有几个切片,而且呢,长度呢,就是从零到86啊。这么长哈啊,你如果你有多个界面的话,那后面还会再有。切片的源码。
我来说两句