00:00
好,简单的回顾一下上节课讲的内容啊,首先从这个第二章序列化开始,序列化这块呢,就像这个概念,这个描述啊,我相信大家这个已经理解了啊,只要你对他有印象啊,能深刻的理解他就OK,面试的时候不会去问你这个系列化和反系列化这个概念啊。他不会笨到这种程度。他会问你什么呢?有一道题是常问的,问你这个为什么有了这个Java,有了基准化的框架。或者还多的框架。还要是。什么原因呢?跟班长一样都不好使是吧?这啥意思呢?哎,主要呢,就是因为Java的系列化框架非常重。啊,一般的都说这个框架,有的框架重,有的框架轻啊。重和轻什么意思呢?重呢,就是因为它封装的内容特别多,实现的功能也比较强大。
01:01
但是呢,对于我们开发者来说,有可能一些特别偏的一些功能,我们不用啊。啊,一些基本的就够用了,那我们往往会选择一些青少年的。看你的业务复杂程度哈,那比如说这个这拍内部的数据传输,那他可能需要的就是这种轻量级的。简单粗暴,只捞干的啊,你有什么?核心的数据是数据。我少加一点胶信息就OK了。那你像这个Java这个不是Java这个呢,它是给你加一堆,在前边加,在后面加啊。根据各人各式各样的这个功能啊,还会再加,所以说导致呢,这个有效信息。这个利用率非常低。所以说这个是关。键啊。呃,那你要是稍微正统的官方一点说呢,那就是开拓心水化特点有什么四个特点。快速啊。可扩展性以及。这个互操作性。那这个嗨,管这的话,独有的其实是。
02:00
啊,快手。行,那下面呢,说一下这个自定义B对象实现技术化接口。实现的red对吧。呃,总共呢是七部啊,但是我们第一个案例呢,只需要六步就OK。实现这个高接口啊。然后。这个必须有一个工商护照。是在反射的时候要用。比较核心的就是说你要重写的系列化方法和反系列化方法,那这块呢,要稍微注意一下。这边呢,比如说内存中的对象想传到就是。传到B里面再进行对象,那怎么办呢?他首先要先序列化啊。期的话的那个本地磁盘,然后传输传输到这边本地。然后再从这个吃法里面。啊,这么一个过程,那这个往这里面写的一个过程就是。趋势化的过程。那这个读的过程就是。
03:01
反化的过程。呃,像在我们这个孩子框架当中,那这个技术化方法和反型方法,反新的方法什么时候用,那你想想A这个可能是。那B类呢,就是。Radio test,那map阶段呢,是不是把它写在这了,哎,Reduce阶段呢,他把这数据读走。那这个可能有些同学他晕晕在哪呢,大家现在我们用的都是这个单台服务器对吧。吧,现在就一台服器吧,看就本地本地一台吧,气。有什么问题呢?如果你是多台服务器的情况。你这个map和reduce,它不一定是一台服务器。哎,Map有可能是一台服务器,是在另一台服务器上。那么你将map鸡蛋里的数据传到里面去。看你是不是要跨服务器啊。跨器通信,那跨服器通信,你这个对象往这个对象里传,那是不是得经过这个序列化。
04:01
这是这一块啊。那再往下呢,这块要注意什么呢?这个反系列化顺序和系列化的顺序要一致啊,那这这个呢是原因就是因为在传输的过程中呢,是遵循的这种队列的结构。先进先出。先写这的一用一,先进行反省。92。那下面这个通时率这个没啥说的啊,你要写到这个文件里面,按照你的要求格式写,那你就要重写的同时率方法。第七个呢,后面我们再讲这个排序的时候还会讲。今天应该讲到。那下边呢,做了一个细致化这个案例,这个案例呢,大家一定要非常熟便的去掌握啊,这个非常有用。这往往呢,在你呃后面的开发中啊,像这种字段。看我们这才几个呢。这两。对我是吧,现在人已经少了啊,六个子弹。
05:03
但是呢,麻雀虽小是吧,五脏俱全,基本上也够用,那六个指段,像真正开发中呢,一般都到100多个字段。是比较正常的。那么这100个字段是不是你都要用呢?呃,往往我们关心大家的一些核心字段啊,也就十到20个左右。像那个之前在有个老学员做的是这个电信行业。它那个字段你知道封装到什么程度吗?就是你手机里的任何一个组件,甚至这个组件的一个厂商。他都会给你封装到整个的一个。手机吧,你买一个安卓手机对吧,安卓手机里面应该有升千三万个这个组件吧。电压呀,和这个电阻啊,电容啊啊。包括这个,比如说其中的一个液晶显示器。
06:02
就那个显示屏,它是哪个厂商的。它的电压电流啊。是什么样的,是什么型号的。啊,这个适配屏幕。分辨率啊等等,所有的信息全部封装到这里面。但是你真正用于这个分析的时候。或者分析某一两个指标的时候。哪里?那这个呢,作为输入数据。最终我们要求的输出的是关心的就是手机号,以及这个手机号的上行流量,下行流量。那在这个过程当中呢,呃,用于你想传输多个字段啊,多个信息。那往往呢,我们将这个信息呢,封装成并对象。那并对项传输呢?你想想对这个它进行传输,那它必须得支持绝对化。像我刚才说的,如果你这个是跨服务器,这是卖这是。这是两台服务器。
07:01
想从A服务器的内存中的数据写到B服务器当中。那你必须得经过虚化这个。那自定义这个并对象实现序列化。下面。面这个想象力哈,我就不多说了,大家今天已经又敲了一遍,至少得敲三遍了吧。小姐。至少三遍,只要你在网上敲了三遍啊。能掌握。只要。智商是吧。比我差一点点就行了。我知道没有啊,但是呢。有工服的是吧。不是来下象棋是吧?下你这个。行,那这个呢,是这个虚拟化的案例啊呃,最主要的就是掌握将这个B对象啊。实现新的化就OK了。那下面呢,是这个第三章。外边就是观察原理,这张呢,属于这个拔高体。呃,往往就是在面试当中啊,问你这个源码是怎么看的。
08:02
包括今天呢,还会大家看源码。呃,之前看的是。咱们看的是照提交流程的源码和切片的源码,详情今天会带大家看啊,Map阶段。Map整个后续的分区。排序。让你把这个东西呢,更深入的一个理解哈。呃,像这个源码这一块。理解的最好。你你爸爸跟一跟啊,学习学习,如果说啊没有这个。整明白,其实问题也不大啊。不会影响你,至少不会影响你的开发。但是呢,在面试的过程中呢。说这道题。要选择性放弃了。呃,还有一种方式呢,如果说你不想放弃。结论呗,对吧。啊,这结论你可以看这看这这样。直接看就行了。JA提交流程源码解析,那在这个过程当中呢?
09:03
可以分享啊。记住这么一个点。哎,你首先要说明白从哪去打这个端点。照宝贝的方。Communication。这个方法,那进到这里面呢,最核心的一个方法,其实就是这个造照提交。那提交的过程当中,他提交哪些信息,这个你是一定要清楚的。那他在提交之前,首先呢,它是根据你这个代码的情况,他会选择判断是创建一个logo run还是雅。不一样,这个呢是本地运行,这个是集群上运行。那不管你是什么样的路径上运行,那它都要创建一个D。那如果是本地的,那就是本地文件路径,那要是集群,那就是as。不一样啊,OK。那另一个呢,他还会根据你这个提交这个job,创建一个针对这个job的ID。
10:00
然后拼接成最终啊,要往这个路径下面提。提交资料的一个全件。在一起啊,OK,那下边才是你具体要提交内容,提交的内容你是一定要记住的啊,这个面试的时候还真问啊,比如说我就问啊,我就问你。你提交照的时候。你到底提交哪些信息?还记。切片啊切片,大家看到了还有什么。叉ML对吧,如果是基金环境还会提交。这三样你说清楚就。就能证明你看过对吗?啊,所以说你整个这个一套源码,你没太记,没记太清楚这三个东西。那第一个呢是芯片信息。由本地路径和。之后呢,是造把查到了信息,那这个呢,就是整个这个造把运行啊。所需要的所有的配置文件。
11:00
最后呢是这个,如果运行的是雅安run,那需要获取的加包。因为你在机器上运行,你没有价包,那你运行的是哪个。所以说记只要记住呃。你提交的信息包括切片,包括查脉络,包括。稍微再扩展一点,就是说在这个创建re的时候,有两种,一个是本地一。OK哈,这是这一块。行,那下面呢,这个切片源码这块。也就是说fair input和骂它是如何欺骗的,这个也是问的。那怎么办呢?问,你看没看过这个赵一部的欺骗人马?怎么能证明你看过呢,你肯定说看过的。那这里面最核心的一个就是你这个切片大小。
12:01
那这个公式如果你往那一放,这事就搞定了。那这个公式里面呢,是有一个。Mini size和block size3个因素。三个因素分别都怎么去影响?这个最终的积分大小。比如说那个面积赛怎么认知。80最大。啊,浪的最大值是吧,的最大值。然后不拉子。大家说清楚,集群环境下是128兆本地模式。哎,如果你能把32兆都露出来。那你想想是吧,那你肯定看不了码。因为你在网上你搜各大资料一说都是啊,128兆,128兆对吧。那你突然整个32吧。他瞬间一迟疑,说,来,我给你看一下人马。我直接就搞定了。
13:00
直接他就服了。所以说有的时候要要套路一下嘛。他肯定不信的,有一些他没看,他们真正没看过的人,他会不信的,他会质疑你,你是不是记错了。就到你表演的时候了是吧?然后这个补充完32号之后,接下来你还可以再来一句什么呢。那你问他啊。那如果说你说的是128兆一片,那么129兆切成多少片呢?啊,对。所以说你这一问,然后他又一迟疑,他说那肯定两片啊,说来我再给你看一看是吧。然后你就入职了。就那么简单。这你看就这两这两个代码就能证明你看过这个代码啊,一个是他一个是。1.1倍嘛,1.1倍,这个是一定要知道的啊,一点。这里面其实这两个基数就OK了啊。设计设计啊。
14:00
面试都是设计的。这个你设计的超级完美。但是呢,开发的时候,像你在你让你们练习的时候,这个是实打实的真功夫啊,这不一样,练试的时候发现就看你怎么去表演了。是你要去企业之后用到的。是新债,为什么让你们天天每个代码求三遍啊,你可能。这么简单,大码让我敲这么多遍干什么?我相信,我告诉你,你这毕业的时候,你要真的回来,你再瞧一下,你看看,你肯定瞧不下来。基本都忘了,你要多敲几遍的话,印象会很深刻,快速的可以捡起来。OK啊。嗯,这是这一块,那下面呢是即便机制啊,这个呢,稍微总结一下。在里面。呃,简单的按照文件内容长度进行切片,这是切片的机制啊,另一个呢,是切片大小呢,默认是块大小啊。
15:01
第三个呢,就是切面时不考虑数据机整体。而是逐逐。不过针对每一个文件单独切片,单独切片这个没问题吧。说按照某一个单独立文件,比如说这个十兆,他不会跟三一进行。一个合并之后再切片啊这个。那再往下呢,是这个斜边大小参数的设置啊,刚才已经。说过了啊,这两天就不再说了,呃,稍微要提一句的,提一句的话就是切片大小,这个如何让这个切片比这个块大,如何让这个切片比块小啊等等。你要知道调这两个参数怎么调啊。那下面呢,是这个。这个的欺骗机制,他这个欺骗机制呢,呃。的70哈,对于你来说。不是特别大,因为你关心的什么呢。你关心的是如何将小文件?快速的给。合并成一个大的文件。
16:02
你像在咱这里面是有一个什么情况,特殊情况在哪呢。在虚拟存储的过程当中啊。他会遇到大文件,就说你设置这个。比如说你设置最大值,这个界面最大值是四兆,那肯定很小,在企业开发中往往是128兆,甚至说256兆。啊,我是这么大。那他为什么这个存储虚拟存储过程中呢,有这么复杂呢,他遇到的可能是300兆的文件。啊,理论上这种文件是不需要你去核的。对吧,哎,不需要结合的。而且这种一旦你遇到这300兆的文件,往往什么呢?这个文件是不可切分的。加不评分呢?后面你会知道了啊,并不是你们想象当中的所有的文件在集群上都是128兆,或者都是256兆。啊,在后面我们讲这个压缩的时候,会告诉你有一些文件,有一些压缩格式,它是不支持。
17:00
积分的。不能把这么大的文件切。那这一块,那至少你要知道什么呢,哎。最基本最基本的,你要知道这个呢,Taxi不能骂,它是处理小文件的一个非常好的一个手段,可以将小文件进行。包括他怎么使用。我相信没有人不会。就是这么一下,然后接下来是不是还得晒一下把它。改变一下这个泰在这呢。这块这么两个代码就轻松搞定啊,第一个呢是呃,让他更新一下啊,告诉系统采用。默认是什么点?那个。太衣服了,妈的是吧?OK,所以说这地方呢,其实对大家来说啊,压力并不大啊。是学习那个机制的时候,你要。
18:01
行,那这是这些,呃,前面呢,还有一个啊。这地方呢,就记住这么一句话。切面大小。决定了开多少个麦。切片大小影响外部态势的个数。所以说这个一定要记住啊。那剩下的就不要说的了啊,接下来呢,我们往下讲啊。
我来说两句