温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
好,那下面的话,我们来看一下这个have集成T引擎,比如说把我们这个MR呢替换成这个T,我们后面呢,会学到Spark,会学到flink,也可以对这个have相关的引擎进行一个替换啊,我们后面会学到叫一个什么呢?叫Spark on have。比如说把你这个MR底成这个MR替换成用Spark基于内存去运算行,那现在这个T呢,是have的一个运行引擎,性能呢优于这个MR,为什么要用这个MR呢?来看一下这图,这张图呢是T子它官网上的啊一张图啊,官网上的图,那你能看能不能看懂啊。这是正常运行have底层是采用mmr引擎计算的时候,这呢是一个map reduce任务,上面呢,这个蓝的是map,这个绿呢是reduce聚合对吧?啊聚合,它聚合完之后呢,它作为下一个是呃,下一个这个数据的一个输入啊过来过来,然后呢进到这里,那中间像这个云状这些东西它是什么呢?是磁盘哈,云状这东西是磁盘,相当于是落盘了,然后再往下聚合啊聚合到这儿,然后呢,这儿呢是聚合到这。
01:08
然后到这儿,这个过程当中,其实要落盘的,落盘之后呢,又往这走。你会发现这里中间过程啊,落了好几次盘,那你看右侧这个。啊,右侧这个,右侧这个前面啊,有这么多任务,然后聚合到这儿。之后没有中间落盘的过程,直接就回到这这个也是。中间没有落盘过程,直接运算最终的结果,甚至呢,中间还省略了一些步骤。哎,这就是T引擎的一个优势哈,所有数据不落盘,直接在内存中完成。那可想而知,它肯定快呀,都基于内存运算,那不快嘛,对吧?啊,就说用have呢,直接编写MR程序,呃,假设有四个依赖任务的MR啊,上图中绿色呢是reduce task啊,云状呢是写病例,呃,需要中间结果呢,写入到这个啊,持有化的这个ADS盘相当于落盘了,那T呢,可以将多个依赖的作业呢转换成一个作业,这样呢,只需要写一次as。
02:06
就可以了,也是最终这块它落盘就行了,且中间节点较少,从而大大提高它的计算性能啊,就这么一招,基于内存运算,那当然基于内存运算有好处有坏处啊,你看到它是快了,有好处,但是呢,这里面也会带来一个问题,如果你分析的数据量非常非常大啊,非常非常大,比如说这一块我计算完之后。然后再往这计算的时候看,内存溢出了。那内存溢出的话,那你就得重新从头再重新算,但是我这种呢,我这种呢,是今天算完之后,我持续化道磁盘了,那我算到这的时候呢,它挂了,那我可以从磁盘再读,相当于我这个啊也有一定的好处啊,这东西呢,万事万物啊,不是绝对的。这个呢是注重的是性能快。但是有风险啊,有风险啊,有风险就是你数据量特别庞大的时候,那中间过程没有任何的一个缓存,也是没有任何持持久化到磁盘,那只要最后这一步,哪怕说最后这一条数据往这里面写的时候挂了,那对不起重新跑。
03:09
啊,各有各有优势,各有劣势啊。
我来说两句