00:00
好,接下来呢,我们开始讲第三章,也就是map的框架原理,整个第三章呢,都是非常非常重要的。那这里面呢,涉及到了你几乎后面呃,开发用到的所有的基础。所以说这里面呢,一定要重点去学。呃,我们开始呢,先从这个输入开始。也就是那个阴部的。这里面有很多很多知识点啊。我们争取在一天半左右的时间啊,把这块呢给它消化掉,消化掉之后我。我们再把这个MAR6整个的工作流程给大家去详细说一下,目前呢,上来就如果就跟你说这个的话,你。是晕晕的啊。直接就。入门到放弃了啊。那下面呢,我们先从这个input开始啊,给大家去讲一下。呃,讲这个八之前,先讲一个切片与map并行度决定机制。上面这两个词你可能都不太理解。一个是切片,你不太懂,另一个呢是map并行度。也不太清楚。
01:00
啊,没关系。先看下面这个问题。Map态的并行度决定map阶段任务处理的并发度。比如说你同一时间开多少个。比如说你处理这个受重点S。送我点VI吧,啊这个avi,那么你要想处理它,我要开几个。那一个服务器呢,就是一个卖嘛啊。啊,这有一个map test。开多少个合适?他是不是这个并行度开的越多。速度就越快呢?比如说1G的数据,我们启动八个map,这是1G的数据。我们开了八个ma,平均一个人处理128兆的数据。也就一。
02:00
那这个是不是效率肯定会高一些。肯定比一个这个麦太小处理的速度快一些,那么接下来的问题是,那么。那如果1K的数据。起八个他妈太。就说这是1K的数据的。你也要洗八个吗?那我就跟你说,你启动一个MPA的时间。啊都很长对吧,启动完之后结束。那就跟会商似的是吧。啊,刚准备好。是这样吗?是这样的。那这个肯定不合适啊。那开多少合适呢?慢啊,并发度并不是越好啊,越多越好,也不是越少越好。那哪些因素影响了这个map的并行度?这就是接下来我们要探讨的问题。因为这个变异度呢,呃,相对来说如果多一些的话,那肯定会提高我们的效率,但是呢,并不是。
03:01
讲这个并行度决定的因素之前提两个概念,一个是数据块。一个是数据切片。这两个要深入的去理解啊。那第一个数据块。数据块这个不陌生哈,这个前几天一直在反复的去说。G Di上存储数据是按块。一块多大?哎,128兆啊。那么block是HD上,物理上把数据分成一块。什么叫物理呀?是不是存储在磁盘,实实在在存在的。是存储在磁盘上。物理上的。那么下边这个数据切片呢?数据切片只是在逻辑上对输入数据的。哎,你原来这是物理上就存在这个磁盘上了,那逻辑上呢,哎,我可以标记出来,比如说你这是零到128。我逻辑上可以给你来个零到64。我认为这个。
04:03
它是一片。只是标记它啊,我并没有把这个地方,我又把它拆分成两半吧。啊,并没有拆两半,我只是用这个数学啊记录下来,这是零到64啊,放到一个集合数组里面去。记住,它是。逻辑上的节点。它并不会在磁盘上将其分成。第二进行。不会动它物理上的一个存储。你该怎么存怎么存。只是。我标记说这个是我的啊,这个零到64。啊,64~128变成另一片。稍微想一下哈,这是整个存在磁盘上的这一大块。是物理上的一个。但是呢,在这个物理上呢,我对它进行了一个标记,我告诉他说,哎,零到64。啊,64~128再放一瓶。稍微消化一下这两个概念之后,那下面我们来看这道题。
05:04
呃,数据切片map和并行度决定机制。首先这是送送点它呢是。300兆。这么大的一个数据。这边呢有一个集群,集群上呢有三个数据节点。这三个数据节点呢,分别存储了这个送数点ay的三块。28到一块嘛,那就是零到128存在了DATE0。啊,D01。这个128到二百五六。在了啊。这个256~300兆存到了。三。存储上了,那这个现在叫什么存储啊。说物理上的存储啊,物理上实实在在的就这么存着。假设切片大小设置为100兆。
06:00
假设啊。平均真的,因为我这300兆嘛,我相当于对它这个平均一下除以这个三。那会出现什么效果呢?我将它切成三块。这是界面啊,界面是逻辑上的。啊,我并没有实际实际的去改的存储位置。那么你在启动map test的时候,一个map对一个切片。有一个map,你就要求启动一个。那就会零到100正大数据的时候加载到慢上面去。那你这里面是不是还剩一些啊。哎,那你起第二个慢拍的时候,那这个是不是得读呢。啊读过去,那这边又到100对吧。那你说把这一块这一块都加载到这。是不是涉及到了一个跨节点的一个数据拷贝啊。到这来,那你这个又一个麦十麦三。那要要求吧。NOTE2和。这个。
07:00
这三上的数据也都跑过来,但是整个这个过程,你是不是一直在这个需要。服务器之间的一个数据的传输啊。那会怎么样?消耗你大量的这个网络IO,性能非常低下。那应该怎么样呢?假设这个切片的大小设置为。128兆。128兆是。Block,大小块大小对吧,哎,块大小。那么下面呢,这是蓝线,蓝线呢,我们就是按照这个数据的块大小进行。切片。数据节电。那么呢,就是你第一个map test,就是将零到128所有的数据降过来。第二个ma,哎,将128~256所有数据接设过来。最后一块讲剩下的。你会发现所有的数据是没有任何的IO的传输。那这个效率呢,肯定是最高的。
08:03
知道这个之后,下面来看。一个job的map阶段并行度,也就是说map到底开几个?由客户端提交job的切片数决定。比如说你这边将这个数据切了几片,那我这边就要开几个map test。达到一个最佳状态。啊,一会儿呢,大家看这个源码就非常清楚,那提交几个界面,你这边就要启动几个map test。也说切片,切片数决定了ma的并行。那第二个。每一个切片分配一个map并行度实例啊。那话说的差不多哈。再往下下一个。默认情况下,切面大小等于。它是默认情况下是切片大小等于你这个块大小。
09:00
这个值可以根据你的需要进行调整。但是默认情况下肯定是跟块儿大小,这个传输效率是。资料架。切片时不考虑数据集整体。而是逐个针对每一个文件单独切片。这啥意思?比如说哈,我问你,我再来一个问题。这又来一个。啊,这是100兆,上面是300兆,那这是什么切片。这里说了,切片时不考虑数据整体啊,它不会将这两个放在一个整体里面来考虑。单独去处理每一个文件,单独界面。也就是说你这个300兆切了三片放在这里面,那你这个呢,100兆。单独切,单独起一个map。这个呢,就是数据切片和map,并做决定机制,稍微总结一下。
10:04
Map test并行度由谁决定?数据界面决定OK。那默认的这个切片大小等于。买块大小就OK。那么遇到多个文件如何切片?每个文件单独界面。掌握到这,那这个就OK了啊。
我来说两句