00:00
呃,那接下来呢,还有一这个分区分同我们之前说过,它也是属于呃存储方面的一个优化对吧?啊优化,而且更多的分区呢,是在读数据的时候用到的啊,然后接下来这个呃,合理设置map和V的数量,这句话往这一放,它就很不合理对吧,因为就告诉你合理设置,那怎么叫合理设置呢?业务需然后告诉你根据数据量,根据业务需要说了等于没说对吧,但确实是这样的,因为我们没办法说你什么业务五个办法对吧,六个没能定下来吗?不可能的呀,对吧,所以没办法啊,我们来看一下啊,嗯,关键为什么叫合理啊,因为map跟数量是越多越好吗?不是吧,那这样,那这样说呢,在。可用的CPU范围内越多越好吗?也不是,对不对啊,肯定也不是,假如说你数据量就那么三五条,你非得用十个CPU去跑,有意义吗?对吧,你纯属浪费资源。
01:09
对不对啊,假如说只有三个小文件,那我顶多起三个任务就够了啊,所以这个叫做合理,那更重要的是我们要知道如何去设置它的数量。对吧,那假如说我们知道啊,我想设置MAP10个,设置为优色50个,那我怎么设呢,等于参数呢,这个是我们这块要讲的东西,OK吧,好,那我们看一下这块前面呢,呃,说了很多啊,就说这个脉步数到底是不是越多越好,呃,而且呢,是不是保证每个map接近128兆的文件块,这个就最优呢?其实也不是啊,不是说你一定要保证128兆就一定好,有时候我们可能只要32兆,64兆啊,为什么呢?你想一下啊,128兆这个是数据量固定的,那如果说我们。一行数据啊,只有一个字符就是abcd,是这样的东西,那它得有多少行啊?
02:07
太多了对吧,比你放一个1K的数据一行,如果说一行1K跟一行只有一个字符,那差距太大了,行数对吧?那而我们知道在MR任务当中,Map这个方法是不是一行调用一次对吧?那么这样的话,你一个map执行的时间就怎么样很长了,那这个时候反而我们要把一个快的。大小给它干什么,降下来对吧?我们可能取64兆做一个map部任务,或者32兆做一个外部任务,对吧?做特殊场景啊,主要这个就容了啊,那主要的如何去增加或者说减少呢?呃,就是这个公式,这个公式大家记得,听说那两天大家很痛苦是吧?就是会有老师大家看源码那几这个公式应该要记得啊,对吧?呃,或者说这样问大家吧,我想将MR这边的一个就是说那个HDFS快大小保持128兆不变,我想MR切片的时候,这个快大小呢,往128兆以下调哪个参数调大的是不是啊,把最大值往下调吧,那反过来我要想128兆往上呢,那就调小的,超过128兆对吧,那就还可以啊,这个记住就行了,那就是那个参数对吧,因为它还是用的mmr嘛,啊,就是那两个参数,一个最大值,一个最小值最大。
03:29
大值用的long的最大值,最小值用的一是不是过认值啊好,这是调这个所谓的一个map的一个数量啊,啊同时对于map这边呢,还要这个考虑这个小文件的合并,小文件合并呢,那这个其实就减少我们的map数量对不对,小文件合并嘛,对吧,我们可以用啊对吧,那我们看下默认的一步的是个什么东西,你看have是不是各种给我们做优化呀,默人家默认的就是什么com的,而且大家看这个类名一定要知道它是不给我们还做了相应的一些调整优化呀,因为我们之前看到叫com input,它叫com have,之前总没有have吧,对吧?啊相应的还做了处理了对吧?好,这是合并,那同时还有一个在map only结束的时候呢,设置合并小。
04:29
文件如果说是map o任务啊,那我们的map这一端是不是直接对接out符号,嗯,对吧,那将来你有几个map是不是就会有几个文件了,不是,这个时候最终生成的文件数量跟就没有关系了,因为你都没有reduce了,对吧?那我们假如说map o的时候,它是不是有可能map这边有很多输出的小文件对吧,就输出结果我们合并小文件,为了下一次任务你就不要,你就可以都不用com have。
05:04
咱们用commander have input不就是因为小文件过多吗?对吧,那如果说我们在任务运营过程当中,我能够避免掉小文件的生成,是不是也可以啊,对吧?啊有多种方案是不是啊,一个是呢,已经有了小文件,我们就处理,我们用这个,另外一个呢,这个方式呢,就避免掉小文件的一个生成,那我们看一下几个参数啊,第一个开启。对于map的一个合并,默认的是干什么关闭的啊?诶,我是之前设过了默认啊,默认数这个是默认是啊呃,这个是墨子合并的一个小文件,然后在MR任务任务合并小文件啊,就reduce任务也可以合并小文件,那这个叫立起任务了,然后接下来还有合并大小。合并大小就是说你合并我是合并小文件,我假如说我卖数量特别多。
06:06
你合并出来,我也不能说把所有的合并成一个文件吧,对吧,就类似于combine,还有硬盘的方法,虽然是小文件,但是它是不是也有限制呀,对吧,我合并到多少啊,合并到256兆。好就不和了,然后接下来呢,还有一个,呃,那什么叫小文件呢。对吧,就跟类似于我们前面说的大表跟小表照应,那对于系统来说,你是不是得告诉他什么叫小表了,对吧,那一样的啊,这边呢,也有一个,他说平均值如果小于这个值,这是16K是吧?啊,如果小于这个值的时候呢,那就认为你输出的是一些小分件,我叫要去合并,然后呢,把几个亿合并,对吧,最大不能超过什么256兆啊是这样的一个内容,就是这样的话,我们从源头至少从某一个源头就杜绝了这种小文件的一个生成,对不对,对吧,避免了小文件生成这样的,就是说小文件的问题呢,还是比较严重的,在生产环境当中,对吧?存储它会占用这个内么多的内存,计算任务的时候,每一个小文件,它会独立的去起一个map任务,浪费资源对吧?好,这是我们所说的设置那个。
07:17
Map的一个数量啊,跟数量相关。
我来说两句