00:00
好,接下来呢,我们讲一下这个排序啊。分区和排序都是非常非常重要的啊,一定要搞定啊,一一定要搞定,在开发中大量使用。只要你写MR程序。就没有听说过不用分区和排序的。啊,所以说这个重要程度是什么样子的,这里要清楚啊,来我们来看一下。排序呢,是MAS框架中最重要的操作之一啊,非常之重要。那么map task和radio test均会对数据按照K进行排序,记住哈,它排的都是K。而且默认的它就会对平行排序。该操作呢,属于排除个人行为。任何应用程序中的数据均会被排序,不管逻辑上你需不需要。上的,反正就是按照字典的默认顺序去排序,除非你重新写了。这个排序的方式。
01:00
啊,否则的话默认就是质点排序,那实现这个质点排序的过程呢,是。快速排序。啊,这要知道啊,这是手段,这个呢是我们的需求。那默认的排序呢,是按照字典排序啊,且该排序的方式,这个实现方法是快速排序。回头带你第八个看。好,那这是排序的概述。那下面呢是呃,看一看在map阶段。和阶段分别都进行了哪些排序?这个是要清楚的。因为在未来的面试当中啊,一般我都会问在玩一个MR当中排了几次序。进来。对于ma的。他会将处理的结果暂时放到环形缓冲区里面去。对。题,当观影缓冲区使用率达到一定阀值啊,其实就是100兆的80%。
02:05
再对管真缓冲区中的数据进行一次。快速排序。也说快速排序,在这个呢,如果你没有设置默认就是按字典顺序排。对K的支点是一排序。那并将这些有序的这个数据一写到这吧。写到十盘嘛,一写那个小文件嘛,把把他们那个分区完成之,呃,排序完之后。再往这个棋盘上一写啊。一些多次啊。那一写完毕之后,它会对磁盘上的所有文件进行归并排序,将多个有序的小文件合并成一个大的游戏的文件。的这种排序方法就是规定排序。那也就说在map阶段,至少要对P进行一次排序。还要对一写的文件进行一次规定排序。
03:01
啊,这两个排序要知道啊,那排序的算法呢,第一次用的是快速排序,第二是用的是微分排序。对于这个test。他从每一个map上远程拷贝相应的数据。他是拉出去哈,这边是map,这边是reduce。是reduce去这主动拉拉回来。并不是卖不太往这送啊。不一样啊。如果文件大小超过一定阀值,则会易写到磁盘上。他往回考啊,这个reduce往回。好,这个数据。往这拷出去的时候。哎,先放到内存中拷出来数据。内存处理速度快,但是呢,内存有一定的这个上限,后面呢,我们有一个参数是专门调这个内存上限的啊,在这个卖技术优化的时候。那这个上线如果答电经滑折之后怎么办呢?他就要往磁盘上去写。
04:03
一样保存到是哪里的?否则存储在内存中,如果数据比较小,就存在内存中了。如果磁盘上的这个文件数目达到一定阀值,则要进行一次规定。啊,这是阶段性的一个规定啊,生产。当然到最后的时候,他一定要形成一个最终的有序的一个大。大文件。所有文件都在里面啊。呃,如果内存中文件大小或者数目超过一定阀值,则进行一次合并,将数据一写到磁盘。这也是一样的,刚才说那个只要撑不下,就往这上写就行了。当所有的数据拷贝完毕后,Reduce task统一对内存和磁盘上的所有数据进行规定。最终的目的就是对所有的数据进行合并,形成一个大的文件。那在这里面最主要的一个排序就是。可以多个有序的小结。
05:02
OK,其实这里面在六太里面还有一个分组排序。
我来说两句