00:00
好,接下来呢,我们讲一下这个非常核心的地方,也是卖就是的核心思想,对理解这个MR程序啊。会有深刻的一个帮助啊,接下来我们看一下。对程序有这么一个需求。需求什么呢?统计其中每一个单词出现的总次数。单词在哪呢?在这。最下面是两个文件,一个文件呢是200兆。一个文件呢是100兆,这里面存的都是单词。家长户外学习。就来干这些吗?那这呢是两个文件啊,存储这么多数据,这是输入源头。呃,要求干什么呢?统计其中每一个单词出现的整式数。然后呢,并把这个结果呢,输出到两个文件,一个文件呢是A到P,一个是Q到C,也就是说以A到P开头的输出到一个文件里面去。
01:07
你Q到这开头单词。等你。I豆存到哪个文件?第一个啊,一个。的Spark呢?就是这个里面。是这个意思啊。OK。程序一般分两个阶段,一个map阶段,一个。还记得麦克鸡蛋是干什么的吗?分没第三。这个非常默契。继续。那现在你看一下这个map它如何分的。它是按照块默认是按照块的大小对数据进行分辨。分成两块,比如说你是200兆吗?对吧,128兆。默认值啊,当然后面可以调。那128患者,这那另一个呢是。
02:04
这是一个一个服务器啊,这是三台服务器。OK,那像这个呢,这是整体一个文件就100张。小于一百八可以。那分完之后,对应运行处理某一个这个数据,就要启动相应的一个进程。那这几场呢,就是卖。麦克阶段,麦克阶段的任务。那启动它之后。这里面要对它进行一个解释。它是并发的麦啊,完全并行运行互步。歌。也就是说这个麦克和他和。没有任何关系。因为他是分开干活对不对,哎,比如说这个还是呃,这是比如说宋老师的这个。要找啊,双手点五码A边。
03:03
盘高清模板,那么你只要查你自己的电脑就行了啊,查你这电脑上有没有,然后你告诉我。有的话我去考一下。这件事没有就拉倒了,你并不需要跟你同学去交流,对吧?啊,你不需要知道他有没有。他们之间互不相干,各干各的活,完全兵法运行。那么这个map。它是如何重复的呢?首先。读取数据并按行处理。这不一百28兆吗?它不会一下子读进来,它是一行一行读。把第一行读来,把第二行读过来啊。把第三行再读过来。一行一行读。董胜进,按法处理。OK,第二个。要按空格切分行内的单词。你看这个这一行。
04:00
就两个单词啊,哎,我要对它进行一个切分。那我就用空格这个。那如果你中间是杠G这种制表符,那就。看你中间间隔的是什么。就按什么去接。OK,记完之后它就形成一个单词了。切成什么样呢?切成这种黑豆。单词为K。这个单词出现的次数为。切完之后会形成什么效果呢?比如说这个第二蛤蟆就会切成SPA。然后还有。这是外部阶段,他不合,他就给你切成这一个一个的对。想象一下,这个人变成了一辈子。切成这种。方便后续的一个,就是阶段的一个。OK,那再往下。将所有所有的K对K键子对中的单词按照单词的首字母。
05:07
分成两个分区。因为这个需求A到B的要放到一个文件里。课到这里要放在一个文件。那我虽然说把这个切成一个一个单词了。但最终我还是要分开的。那我在卖一段就将它分开,怎么分呢?分区一只存储数据是。分二。专注的是就到这。30的首字母啊在这。在这我就给它分开。分区。完成。那么其他的依然也是这个操作。你自己查。都上完之后,Review第二阶段要起来。
06:00
那radio的什么特点呢?阶段的并发也是这些任务。也是互不相关。但是他们的数据。在上一个阶段。阶段的数据都来源于慢阶段。来ma阶段什么呢?来源以并发实例的。你说都来源于这儿,要往出输出的。那具体怎么来的?比如说你这个reduce,他不是负责统计A到P开头的单词。那他怎么干呢?他会去这个每一个map里面去拉,拉出去拉谁呢?拉分区一的,只拉分区一的。因为分区一里面存的都是。所以说,这就是为什么在前边要分区的原因。他就只拉对应的。
07:01
因为他拉客到这的没有意义。统计的就是一道题。OK。那下一个reduce呢,它是统计QZ。那他就把听到这个单词。分别拉自己的。拉完之后。分别输出。这样呢,就能实现一个什么效果呢?这个reduce a到P啊,这个reduce输出的是A到P的结果。了这套需求,那各大Z呢,是这个reduce输出到这。实现了整个这个效果。好,那下面还有。麦克6S编程模型只能包含一个麦克阶段和一个比六阶段。如果用户的业务逻辑非常复杂,那么只能多个6%程序串行运行什么意思?也就是说你这开启这么一个八六程序。他只能有这么一个Mac阶段。这么。一个阶段。
08:00
你后面不能再来一个map,就来个六。那你要有这种复杂的业务怎么办呢?啊,你可以多照个串联,多个外面都是串联。你这个运行完之后,卖阶段数据给他了,他这个呢,可以作为下一个60%。程序的输入。那这里面可能分卖吧。后面我们有一个多账户串联的业务。大奖。但是呢,一般呢,呃,这种不太。不太多。再往下。这里面有几个问题我们就要考虑的。第一个这个map task如何详细过?那再来。Reduce task。又是如何捕获的?他又做了哪些事情?再往下。Map task如何控制分区如何控制?这又是一个问题。
09:01
造价。Map task和radio之间如何衔接的,你说?那你这个map阶段和阶段,他们中间又拷贝了哪些数据?如何来玩?等等细节我们后面都要去。那现在呢,我们稍微再回顾一下啊,再捋一遍啊,这个东西相对来说难理解一点。首先这是需求啊。我们要统计这么两个文件当中每个单词出现的次数。一个文件在里面200兆,一个文件里面的。但是呢,我们默认的块的大小呢,是一百十八兆,那它处理的时候呢,默认的切片呢,也是128,后面我会提切切片的一个概念啊。姜维印象。这里面说对这个数据处理呢,任何一个卖出的程序啊,都有卖出的和reduce的啊。
10:00
个别极个别的特殊情况,后面跟他说。啊。那么外阶段呢,这里面根据这个数据的输入。一看。需要分成三个任务来跑。因为第一块呢是200兆。原因是128兆一块就。那另一个呢,这个是100兆。大了一下,运行每个程序都需要一个web test。那么map里面做什么事情呢?主要是先补数据,按行糊啊。上去读。读一行,读起一行之后,那你发现这个第二行它中间有空格。那这种风格呢,我要把它切掉。切成这个一个一个的单词。
11:00
SPA。啊,那么K位对K位建子对呢,最终切成的就是我刚才说的啊。最后将所有的KV键值对中的单词按照单词的首字母。两个分区一起到吃饭。原因就是因为我们要输出到多个文件里面去。那么分期的原则呢?是将A到B呢放到一个地方。搁到这个,放到一个地方。那每个后面每个麦都是无此之操作。上查完之后,那就这个麦克阶段全部都跑完之后。接下来开启就水道。这也是我们在运情或者刚成立的时候,你会发现,哎,卖了100%。REDUCE0%对吧,啊,然后之后是卖了100%,Reduce百分百。
12:01
OK。那么radio阶段的所有的不相干。他们之间没有任何联系。那么第一个呢,Reduce呢?它是只处理A到P的单词。你去处理A的。那你拷贝的时候也只考这道题。那另一个呢,是处理各套类的,那拷贝的时候。提高这个开发的效率。这都是框架。已经。能完成的。有关系。OK,接下来是输出数据。外这个框架啊,这个是不建议这种特性。OK,那之后呢,是我们有几个问题要考虑,Ma test如何工作,Re test如何工作啊,以及ma test如何控制分区和排序。以及map test和radio之间如何衔接,在我们后续的过程当中都会将这些问题一一给大家解答。
13:03
好,这就是麦,就是整个的一个分析思想啊。这块呢,需要你去花费点时间多去琢磨琢磨,尤其是刚进入到这个外部这程序的一个编写。你对这块的理解呢,肯定不是那么特别。需要点时间。我换一个上好。
我来说两句