00:00
接下来我们看一个reduce端的优化,那么首先第一个呢,就是合理设置reduce的数量,这个其实是前面讲过的知识点,只不过在这里再给大家梳理一下那reduce的数量其实。跟咱们那个task数量还有核数有很大的关系吧,就这个资源其实就CPU资源,那么过多的CPU资源会出现空转,过少呢,会减少任务性能,那咱们reduce的数量其实不就是杀否后的分区数嘛,也就task的数量,也就是咱们前面讲的并行度,也就是b circle口默认的那个200啊,那这个中间怎么个合理法呢?咱们前面也讲了,并行度跟并发度得多少啊,并行度就踏个数嘛,并发度就是呃,整个Spark集群的一个合数。那是不是二到三倍啊,对吧,那比如说咱们并发度是12,那咱们的并行度也就分区数,咱们是不是设为36啊,咱们之前做过测试的对吧?提高咱们CPU性能,那这一块咱们不再去演示了,如果你忘了再回过头去看看前面的这边只是给大家再次做个提醒跟梳理,那么现在呢,我们来关注一个事儿啊,也是生产中经常碰到的一个小文件的优化。
01:20
小文件的优化呢?咱们分为两类,第一类呢,就是咱们插入新表交引后啊,因为要杀佛,然后再插入心表,那这个呢跟并行度有关系,第二一个呢,就是动态分区产生的小文件,这个相对麻烦复杂一点,咱们也给出了一些比较好的解决方式,那我们先来看第一个吧,这个九以后产生三呃,产生的新表。那默认九引后,结果插入新表了,生成的文件数量就等于杀手的并行度。当然这里咱们不考虑分区啊,也就是说这个现在不考虑分区,那么默认就是200份文件插入到HDFS上面,那解决方式也很简单,第一种咱们可以选择呢。
02:09
做一个啥呢,把那个并行度调下来嘛,就像咱们之前默认200,我调成36啊,我们一会跑一下看一下文件数好吧,另外一个呢,可以主动调用。Chorus或者repetition算子啊,对,咱们的这个其实也是缩小分区嘛,还有重新调整分区嘛,一样的道理啊,都可以实现,那这两个算子大家应该很熟了,直接去调用就行了,那我们这三种方式调参数调用两个算子都一样啊,效果都一样,那我们就简单演示一下,看一下文件数的具体变化,呃,那我们找到这个partition DEMO吧,这个是不是三张表进行了一个交易呢,对吧?还是这个案例,然后呢,这边广播广播也无所谓了,那现在没有设置并行度,默认就是200,呃,咱们要我也不再重新打包了,咱们直接打开好吧。
03:06
呃,那为了观察一个效果呢,啊,也不用观察效果,咱们跑完看HDFS这张表的那个文件数就行了,来咱们执行。那么等他执行完啊,执行完了,那我们直接上HDFS瞅页,嗯,找到刚才那张表。那张detail对吧,这张表点进来,那这个文件数看一下下面的统计。两百两百零一是因为多了一个success对吧,把它扣掉,那不就是200嘛,200其实就是咱们的分区数,那么接下来咱们快速做一个比较,呃,咱们在十。考一个吧,考一个这个。其实这个跟咱们前面那个。
04:01
差不多啊。那我直接执行后面这个就行了呗,对吧,我再跑一下后面这个tening,因为turning指定了一个分区数,当时我们是看了一个CPU的使用情况,我们现在关注一下文件数,仅此而已啊,我把它打开。那还是插入到这张表,还是做join对吧?来执行。等待它执行完,咱们执行完了再来刷新一下这张表的路径size Co detail刷新咱们往下翻呢,发现这个统这张表的文件数变成37了,那么再扣掉这个success,那么是不是一共文件块有36个,是不是等于咱们的并行度啊啊,这个就能解决一定小啊,咱们这个。小文件的问题,但是有时候你又不想说。
05:02
那沙否的执行效率变慢了,比如说你把它设的更小,设成三,那肯定是不合理的,对吧,那你这个时候呢,就可以考虑那个调用主动改变分区的算子,比如说咱们另一个案例,这个杀否的并行度还是200,那我们可以在杀否之后呢,再让它进行一个缩小分区,对吧?比如说你在这里调用一个。呃,什么来着。Course在这里调用啊,那这边要传一个数字,比如说咱们要说成六个分区可以吧。那这种情况呢,就咱们就可以实现不影响沙uffper,然后呢又能缩小分区,但是额外的损耗在哪呢?我沙完之后还要去合并分区啊,那你可以去看一下哪个更合适对吧?那这个咱们也直接跑一遍吧啊。
06:01
呃,六啊,可以走。好,那同样的,咱们要等待它执行完,那个logo星不是打开了吗。啊,不是这个程序啊,应该是这个程序。好,稍等稍等一会让他执行完再看一下文件数。那执行完了,我们一样来刷新一下这个HDFS的路径。刷新,那么大家可以看到七再减掉一个success是不是变成了六个,那这种的好处就是不会影响沙的执行啊,那如果像前面咱们直接调整这个并行度的话,连杀手的并行度都被咱们调下去了啊,这个就看你的去取舍了啊,那比如说咱们根据资源和呃情况,现成情况,咱们分级数调为36,本身就是一个合理利用CPU的考虑,那么生成的36个文件啊,其实也可以接受,也不算很多小文件对吧?那其实这样就够了,没必要再去做一个缩小分区的操作啊。
07:10
那这个事儿呢,大家知道就行了,那除了用。Courses,咱们还可以用repetition对吧?同样可以设为六啊,这样都行。大家可以自己去试一试。
我来说两句