00:00
好,首先呢,我们来看一下第一章map概述,那第一小节内容呢,就是map reduce的一个定义,比如说它是什么。来看一下MA6呢,是一个分布式运算的编程框架啊,首先分布式。没问题吧?哎,多个服务器共同来完成一件事,那他们来干什么呢?进行计算。那它是一个什么?是一个编程框架。啊,这样一个理解,那下面呢,给大家画一张图啊。发张图。进一步解释一下,这是三台服务器,那三台服务器啊,它们里面。对吧,哎,跑着各种计算任务,计算任务计算任务一,然后呢,再来一个计算任务二。计算任务三。好,假如说啊,这个集群里面有这么三个任务,那现在我们不用map程序。
01:03
让你自己去实现多台服务器来完成对应的计算任务,你怎么来实现?思考一下。那你是不是要首先要解决的问题是它们两个服务器与服务器之间要进行相互通讯吧?因为我有可能第一个任务结束之后,我再执行第二任务,第二个任务执行完了,我再执行第三个任务。有这种场景吗?对吧?那你怎么知道他结没结束呢?那你需要进行一个通讯。那还有那任务一可以执行,任务二也可以执行,也就是说他们两个可以并发进行执行。那并发执行,那是不是你就多线程问题。那那他们有可能同时读一块数据,那他们谁来读哪一块数据?是不是也得需要你去写代码来完成对应的功能?也就是说,现在如果我们没有卖卖六程序,那所有的这些底层框架都需要我们自己来完成,那你觉得这个开发效率会高吗?
02:05
不会对吧,哎不会,那迈入六程序它解决了什么问题呢?哎,他把一些底层的一些通讯呢,多线程啊,哎,相互交互的一些信息全都给你写好了,组成了一个编程框架。哎,它自带了很多相关的组件,那么我们用户需要解决什么问题,用户呢,会根据业务逻辑自己去写一些业务逻辑代码就可以了。啊,也就是说我们要写一个卖流程序啊,只需要。只需要什么呢?首先自己处理业务相关的代码,然后你再用上那六自身的默认代码,对吧,那就完事。哎,我们只负责简单的一部分,大部分框架它底层都实现好。这样才能提高你相应的一个开发效率。
03:02
那下面呢,我们来总结一下外边这个程序当中,它到底有哪些优势。那你说它的优点是什么,这么计算,那第一个。首先呢,它第一个优点就是易于编程。哎,刚才已经体会到了,如果说让我们自己去写这种分布式计算代码,那我们要考虑的事情会非常多,对吧?那既然有了这个MAP6程序之后,我们用户只关心业务逻辑,哎,实现一些简单的接口就可以了,实现框架的接口来写代码就可以搞定。这是第一个点,异地编程。那再来看第二个方面,良好的扩展性,那这又怎么理解呢?那看啊,现在呢,我们是三台服务器来计算任务。
04:03
那万一我这里面计算三个任务,我突然有一天啊,我要计算30个任务。300个任务,3000个任务,那我这三台服务器的资源会不够啊,那我的计算效率会越来越低,那怎么办呢?哎,如果是这种情况,可以动态的增加服务器,解决计算资源不够的问题。这多好啊,对吧,哎,非常轻松啊,就可以实现,那我们再来看第三点。叫高容错性,高容错性再给大家解释一下什么叫高容错性。那在计算的过程当中,有可能其中一台任务,一个计算机任务突然间挂掉了,这台服务器有可能都瘫掉了。
05:00
那么我这里的任务怎么办呢?不能算一半。然后结束了对吧,哎,那我还得从头再算。那这很烦很烦人呢,那其实他在挂掉之前,他可以把这个任务转移给其他节点。那其他有资源的节点来帮我们把这块没完成的任务重新计算一下。那谁来帮我们完成呢?哎,Maps对吧?啊,或者说你说hi do法来帮我们完成对应的这种事情高容错性。任何一台挂掉。对吧,哎,他挂掉的话,可以将任务转移到其他节点,哎,这也是它的高容错性的一个体现,那来看第四个,它适合于这种海量的数据的一个计算。
06:01
适合海量。数据计算,哎,这里所说的海量啊啊,一般是这种TBTB级别的,比如说它服务器台数据多,那计算这个效果会越强啊,比如说几千台服务器,几千台服务器共同计算。哎,这是他擅长的地方,你千万别让他算这种小量的数据,你说1KB的数据让他来计算,那他不是他擅长的领域,那你就用MYSQ对吧?哎,用其他框架来计算,哎,至少呢是TB级的数据,哎这是效果是比较好的。那前面说了这么多这个优点,那它有什么缺点呢?对吧,你不能光盯着他的优点呢。缺点有这么几个方面,第一个,不擅长实施计算。
07:01
哎,实时计算,什么叫不擅长实时计算呢?比如说你想让他达到像my circle这种。毫秒级查询,哎,毫秒级查询那不是他擅长的地方。啊,这个不行,我们通常处理的都是这种啊,比如说呃,分钟级别的或者小时级别的啊,可能这个任务啊,跑个三天五天啊,甚至这个七天都有啊,这种任务都有哈,好那我们再来,那除了这个不擅长这种快速的这个响应之外,那他还有一点呢,就是不擅长流式继承。流式计算,这怎么理解,你看啊,我们这里面处理的这个任务啊。下面画一套。比如说这个呢,是。数据对吧,以前我们给大家画这个例子,这里面处理的数据是不是都是。
08:01
静态的。回忆一下叫静态数据,什么意思,这个数据已经放在这儿了,然后你我们,哎,他来读这一部分,他来读这一部分,他来处理这一部分。是这样吗?那实时的这种流式计算呢,是这里面的数据啊,一条一条过来,一条一条过来。哎,过来一条,你处理一条,过了一条处理一条,这叫实时计算。那这个迈60呢,他不擅长,那谁擅长呢,我们后面会学。Spark swimming,还有呢Li,哎,这两个框架呢,是擅长这种流式计算。好,接下来呢,还有一个缺点啊,那是哪个缺点呢?叫不擅长dag有限无关图,有像图,观图计算,那它是一个什么含义呢?哎,是这样的哈,也就是说它这个DA有线环图啊,它的任务呢,是比如说任务一结束之后,会作为任务二的一个结果。
09:05
然后。就是作为它的输入再计算,计算完之后它的结果再进作为任务三的一个输入,然后再进行输出,这样一直往后执行,相当于这种迭代式的一个计算。那这个呢,MAP6它不擅长,但是并不代表它不能这样去实行啊,后面呢,我也会给大家讲这种,哎多job串联也这一个job结束之后的结果,作为另一个job的输入啊,这种是可以的,但是他不擅长,谁擅长呢?Spark擅长诶Spark里面这个RDD这种迭代式这种运算,因为2SPARK这个迭代式运算啊,它中间的结果是基于这个内存的。比你这个中间结果啊,吃鸡吃盘吃体化的磁盘效率要高很多。哎,这呢就是maps,呃,相关的优点和缺点啊,了解它的优点和缺点,那后续我们才能更好的用好这个maps。
我来说两句