00:00
那在我们介绍date差的时候,我们说date差它可以控制并发度啊,它有并发的这么一个概念,同时它还有流控的这么一个功能,它可以控制流速,那一个并发一个流速,我们是怎么做的呢?在这儿呢,我们说最开始的时候啊,我们一直看到在job当中除了有content以外。啊,在我们的job当中,它除了有content这么一个概念,它还有一个叫做三性丝,在三性丝这我们可以设置一些流控,还有并发度相关的概念,那并发我们现在知道了,拆它就是我们的总并发度,如果说我们给它设置成了一,那在我们当前的这个项目当中,并发度就只有一啊,也就是说同时只能有一个菜在工作。好了,那现在除了这个并发,我们还有一些其他的参数,我们来看一看啊,照吧,Setting speed channel,这就是我们刚刚设置的这个参数,叫做总并发,那以及我们task group组的数量应该是怎么计算?哎,在这我就不再重复了啊,那再说一遍吧,使用我们的总并发度除以每一个task group组的并发度。
01:21
那就是我们group组的数量啊,那在speed里啊,除了有一个channel以外,还有另外两个参数,一个叫做record,一个叫做BA record它是总的record限素,BA呢,它代表了总的BAT因素,这个record它就是条数啊,我们数据的条数。那这个be限速呢,它就是我们的字节数。那对应的这两个参数也对应了我们在大数据该中的在大数据中的两个呃,速度的概念,Record限速叫做TPS。
02:05
Bit限速呢,叫做DPS啊,我们两个限速的概念,TPS就是我们每秒所处理的条数,DPS就是我们每秒处理数据的字节数啊,DPS是处理数据的条数,每秒钟处理数据的条数,DPS呢是我们每秒钟处理数据的条数。好了,那在这叫什么了?S4当中我们可以设置这么个参数,一个叫做参,一个叫做我们设置的每秒处理的条数,一个叫做每秒处理的字节数,那好了,我们现在设置的这个叫什么呀?这个叫做总的并发度,以及总的条数的限速,以及总的BA的限数,那除了这个以外,我们还可以设置一个,你看这个参数,它不在SS当中了,它这个呀,是在job把和SS之外的,那这个这两个参数是什么意思呢?你看它也是条数和字节数。
03:09
在这呢,这个叫做单个channel的record限速,单个channel的BA限速,那我们刚刚说的叫做总的record和总的channel,那单个的是什么意思呢?来到我们这个图当中。在。原理在这呢,哎。知道什么叫做单个channel啊,Task运行task的这个channel就叫做我们单个的channel,那单个channel我们也可以给它设置一个BY限速,还有record限速,但是呢,我们设置这个是啥?所有的channel它都是同样的BA限速和record限速啊,我们不可能说我让你的这个channel。它的BA键数是一,然后这个参它的限速是十,哎,不可能我们设置完这一个参数,那就是说让我们每一个参它的速度都是一样的,我不可能说具体设置某一个的啊才啊设置不了好了,这个叫做单个channel的。
04:13
BA限速和record限速啊,那在这大家想一想,我们还有这么一个点。如果说啊,我们设置了总的半限速,也就是我们这一个job的半限速。啊,半径腺素呢,我们给它设置的是。100吧啊,每秒钟处理100条数据,那我现在就拿这两个菜能来举例。那我在这设置的每秒是100条啊,总的我没有设置单个的啊,我只设置了一个,总的你说它会不会出现一个问题,我下边这个它的数据每秒是一条,我下边这个菜它处理数据每秒是99条,它俩加一起还是100条,没有问题吧,加一起正好等于我的总共的限速,但是虽然说限速满足了,那它会出现一个什么问题呢?
05:08
这两个task都分别对应了1万条数据啊,两个task都分别对应了1万条数据。你这个每秒处理一条,你处理1万条,你处理1万秒,我这个每秒处理99条,那它的速度是不是要快很多呀,它是它的99倍,这叫什么啊,不能说叫啥啊,它有点类似这么一个概念,我们在学哈杜普的时候,学HDFS的时候,学mmr的时候,出现过对这么一个概念,叫做数据倾斜,我们说呀,数据倾斜的时候,这叫啥呀?是数据量不一样啊,然后导致我们计算的时间不一样,所以说我说呢,它不叫数据倾斜,但它跟数据倾斜有点像,原因呢,就是因为它的数据量是一样的。只不过由于我们处理的速度不同,然后导致我整个的照把它执行速度变慢啊,是因为我们处理处理的速度不同,然后导致我们整个集群的速度变慢,所以说在配置这些参数的时候啊,我们要遵循这么一些概念,在这呢。
06:21
往下来啊,你看这呢,我们要遵循这么一些规则,如果说我们配置了总的BA限速,或者说我们配置了总的record限速,那么我们就必须配置单个channel的record限速和单个channel的bit限速,那现在大家知道为什么了吧,原因就是我们要让每一个channel它的record限速和BY限速都是一样的。那这样就不会出现我们所说的类似于数据倾斜的这么个情况了。能理解了吧,啊,前两个配置是基于这个的。
07:03
再来,如果说我们配置了总的record限速和总的BAT限速,那么China的这个配置,我们配置的总并发它就失效了。那我们并发要是失效了的话,我们要有一个,那我们也要有这么一个并发呀,我如果说没有并发,我怎么样确定group组的数量呢,在这呢。因为。我们配置了这个总的record限速和总的半程限速之后。实际的拆它的并发就不是我们配置的这个值了,而是要通过一个计算得来,我们看一看怎么得来的。首先我们先用总的BA,总的BA限速除以一个单个的BAT限速,然后呢,再用总的record限速除以一个单个。
08:01
的BA record限速,最后呢,我把这两个值给它取一个最小。取一个最小之后,那么最终的这个值啊,就是我的并发数了。那这个在我们的配置当中,我们应该怎么配置啊往下看。这个是单个的,这个是总的的设置,就是配在我们每一个对的差它的。这个灾文件当中了,那除了配置上的优化以外,我们这儿还有一个在内存上的优化,我们说如果我们设置了多个并行度的话,那每一个并行度它在运行的时候,我假设啊,这每一个并行度它都需要1G的内存,那我们设置了多个并行度是不是要很多个G的内存的,那对应的我们呢,就要去调大data差,它对内存的这么一个需求量了啊,那在这呢,也有这么一个参数,我们可以啊,直接在执行命令的时候。
09:03
在这给它加上一个这边M的参数,因为它是一个Java的。进程啊,这个X也是一个Java的进程,我们可以在这设置一个最大最小的内存,不要看这都是8G,在生产环境下,我们可以给它做一个动态的调整啊,你你想调整多少调多少,但不是随便调的,要根据我们生产环境上的情况来调整,或者说呢,我可以直接在data差点PY这个脚本当中直接修改,诶,那它就是一个永久的参数了啊。
我来说两句