00:00
好,那么接下来呢,我们聊一聊have的一个优缺点。第一个优点对吧,都先聊优点啊啊,那么第一个呢,它是操作类似和语法快速开发能力,简单容易上手,其实现在在市面上Java程序最多。对吧。而Java程序员平时所干的活一。C rud,就是我们所说的增删改查为主,就是说什么。写circle啊,他们绝大部分人呢,是有用circle去分析数据的一个能力的啊,所以说这个时候诶,他不需要去写M。简单上手对吧,啊比较快速,比较快速,那不需要选什么,我也能够使用map干什么。去分析数据了啊,他只要提供四个就行了啊,这是简单的,第二个就是我们刚才所提到的,避免了写MR,减少了开发人员的什么学习成本啊,但是其实还是不彻底的啊,因为万一遇到什么问题之后,你调优有可能不知道从哪去调。
01:05
因为你IDFS用到了,雅安用到,M6斯用到,那么你之前在哈多当中学的优化是不是都可以拿到汉米的I用对吧?我不从汉层面去调优,我直接就调哈多这边的参数是不是也可以对吧?就类似于大家所提到的换音缓冲句的大小。你还翻译成MR居民型,要不要经过上环?因为肯定是需要的,对吧,啊,你像刚才我们说的,你勾败了。你最后要把相同的K放在一起去做运算了,这个时候一定要做什么,一定会经过沙波的,那我们调环形缓冲距的大小,调环形缓冲区阈值的大小,是不是可以做到对have这边任务也有所优化呀,对吧?那其实你说不学啊,它有时候优化就增彻底了,对吧?啊但是呢,他能够快速放手快速用起来啊,调优让懂的人去用呗,对吧,那我不影响我分析对吧,这也是他的一个优点啊,啊,但是他也相对于说也有缺点啊好,那接下来呢,这个东西说其实要强调的是have擅长于数据分析啊,你要这样来看,延迟比较高,看上去好像它是一个什么。
02:17
缺点对吧,确实延迟比较高,也是他的一个缺点,我们都希望这个跑任务能快一点,但实际上大家知道我们学到现在你也学过化多连优化了,那无非你所聊的优化,咱们所聊的优化空间跟时间干什么?互相转化吧,对吧,就看你侧重于什么,内存足,那就给多一些内存吧,那就跑得快一点。我资源不足了,那我就时间久一点吧,你就不能怪我了,对吧?啊,其实就空间跟时间的一个互换,所以延迟高这个事,其实其中一点嘛,那我们主要侧重于数据分析,对吧,我也不做那个在线业务,所以颜值高呢,相对说还好啊,相当还好,所以呢,更重要的是它侧重于这个做数据分析,因为它里面有很多的一个分析函数,特别好用的分析函数,你要写mmr的话,其实还蛮麻烦的,但是也能做,你要自己写的话还挺麻烦的。
03:12
对吧,那有了这些东西就很好,然后接下来呢,优势在于处理大数据,数据量比较大啊,处理小数据反而没有优势。假如说你有很多的小文件,我们知道汉不的翻译成MR去运行的MAPB6等于小文件处理很慢对吧?啊不光是我们所聊的IDFS在存这些小数据的时候就很麻烦,小文件的时候,它相对来说占用的内度的内存空间比较高,对吧?更重要的一点呢,就在于M25。虽然我们说了它会切电,但是默认情况下它是针对于什么?单个文件去做的界面对吧,他就判断这一个文件啊,是不是超过了什么一百八兆回去界面。
04:04
对吧,如果说你很多小文件,那每一个小文店都要去干什么?对,占用一个ma task,而每一个ma task都是一个接集。知道那个进城的名字吗?有看过吗?Task进程的名字。啊,卖化妆的。卖包装的,你听这个名字,他能是map任务,他应该是map任务的启动者吧?啊,他的一个名字就是进城的名字啊,稍微关注,叫这个名字啊,有见过吗?不是克莱牙child,我我写的这个东西应该不是看成不至于吧,Child是child啊,叫这个名字啊,这是map跟都是他啊。
05:05
而且呢,都是通过GPS这个命令能看到的,说明是什么。对Java的进程。啊,是一个进程,所有的任务都是一个进程。啊,去关注一下啊,所以我们才在对它进行优化的时候,要做一个或者说前面小文件归档,或者用那个com input分化,对吧,还有一种呢。你的归档吗?或者用COM1步的对吧,合并小文件的方式,还有一种呢,非常好用的。M对G重用啊,GM重用,因为它每一个都是什么独立的一个G进程啊,主要因于这个点啊,而这个点就多说一句啊,在Spark当中反而不适用的,因为Spark所有任务啊,就是这些也有map任务,也有它任务,它都是线程。
06:06
他所有的任务都是线程啊,呃,所以这也是SPA比二快的一个因素,因为你想调调度进程跟调度线程,就算你没有深入的去了解进程跟线程之间的关系。就就是你知道的那些东西,你说哪个快呀,那肯定调度线程快跑启动的线程比启动进程要快多了,对吧,所以在SPA优化的时候呢,也没有GM重用这个优化方式。因为它用的是一个jam Java虚拟机,然后不断的去起不同的线程去运行,对吧?所以多说一句,这个都是优化条件,主要是根据它来的啊,如果mmr什么时候改成了用现成的方式去执行任务,那既然我们只能用这个优化方案就改干啥。干掉了就不适用了呀。他都不不给每一个任务器启动进程了,那有什么用呢?对吧?啊,所以说这个都是一套有关联的啊好,那这是我们所聊的处理大数据,数据量比较大的时候,它是涉及到刚才都说了一点啊,有提到bug这个东西,那如果说你记不住,你放掉也无所谓,因为后期还会跟大家去讲,对吧?呃,然后呢,Have有当中支持自定义的一些函数啊,可以根据自己的需求来实现对应的函数。
07:19
啊,这个就比较方便了,对吧,有很多功能回有很多功能是这样的。啊啊,那有时候呢,我们会有一些需求,它系统提供的函数呢,没办法实现对吧,那我们可以自定义啊,这个也是它的一个优点啊,对应的还有它所谓的一个缺点啊,所谓缺点我们也看一下啊,嗯,第一个还的一个表达能力有限,第一个呢,就体现的这。迭代式算法或者说叫计算,无法表达什么叫迭代式?对吧,对于一个任务来说,何为迭代啊。
08:07
迭代这个词大概知道什么意思啊,那对于我们一个任务,或者对于我们一个数据来说,何为迭代呢?对,呃,对于我们阿妈而言。第一个MR的结果作为第二个MR的输入,对吧,一层一层的往下啊,做这个事情的啊,一层一层的往下的啊,整个迭代的一个数据啊,它这个过程量的,那如果说我们用S做这样的事情,那该怎么做,签到死查询签到很多层很不方便。对吧,而且真效率很低,所以他不太擅长于做这个事情。啊,不太擅长去做这个事情,然后第二个说数据挖掘方面不擅长啊,嗯,第一个数据挖掘呢,一般的都会涉及到这个迭代计算。
09:03
第二个追求的效率也比较高,因为你们MR太慢。一套MR启动太慢了,对吧?啊,所以还是由于这个点啊,第二个整体的它还有的一个真效率相对来说比较低。它自动生成M8作业,不够智能化,这就我们说的have里边写的circle能完成的事情,你自己多想一想,Mmr任务对吧,一定能实现,但是二能实现的东西,有时候have不一定能实现。对吧,就是说不能智能化,第二方面呢,它的调优啊,从have角度调优呢,相对来说比较困难,力度较粗,因为你只能从S上去。调优了对吧,那更多的调优是不是还会依赖于我们哈动方的一些调优,这些参数的一个优化,对吧?啊,其实就做这个事啊,但是这个其实还好啊,因为第一个。自动生成作业,因为我们需要用到have的时候才去用have,特别是第二个调优说,从have角度调优比较困难,但是我们已经学过什么。
10:03
按骂了呀,有时候我们可以直接用什么。MR的优化啊,自己去做不就好了吗?啊,所以说这个缺点相对来说还好,但是整体来说效率低,这个事没法解决。对吧,它主要的效率低呢,也有一个很重要的问题,就是说它应对的数据量怎么样比较大,对吧?啊主要的问题还是数据量大。你不可能说数量太大的情况下,你想做这种分析计算还想快,这个是不可能的,对吧,这个是很难做到这个事情啊,很难做到,除非说你的内存足够大,所有的数据能放到全部加载到内存里边。对吧,能稍微快一点,但是也不能说比我数据量小的时候还快,这个是不可能的。对吧,所以说更重要的问题在于他这个什么数量大,第二个呢,它翻译成mmr任务,Mmr任务本身启动也怎么样,也很慢,对吧,提交任务整个流程乱七八糟一堆啊,所以启动也很慢,主要导致的这个问题啊,像这是我们所说的它的一个优缺点,当然呢,去稍微的关注下就好了,这个倒不是咱们所关注的一个重点内容,对吧。
我来说两句