00:00
好,那接下来呢,我们就一点一点看里边的一个点,其实这里边有很多东西都是比较好理解的,当然有一些呢,呃,需要大家去理解一下啊,需要大家动点脑子去想一想,要思考一下的啊,有的东西呢,就是呃把它记下来就好了,因为优化嘛,有很多东西,对吧,比方说这个资源调优配置,那肯定就本记下来就好了,没什么理解的地方,对吧?啊,那就是资源,那就是数据量大,资源要把它大了调呗,那还那还说啥呢,对吧?好呃,那弗林性能的调成第一步就是合理的去分配这个资源,一般是合理的分配资源了,你不要因为公司有钱,把这个资源呢调到老高,当然你这个任务就好了,你资源浪费其实也不合适,对吧?啊呃,那在这边说在一定范围内增加资源的分配。跟性能的提升是成正比的啊,假如说你资源到了一定程度对吧,假如说我本来只有呃20兆的数据,我内存呢,比方说一个G的内存就是非常完美的去运行了,我给它加到两个G3个G,甚至一个T性能没有。
01:04
提升反而会有所下降,反而会有所下降,为什么?大家知道这个原因吗?或者说我这样啊,我问大家一个问题,就是张二前两天有这个025有学生面试问到的一个被问到一个问题啊,说什么呢,咱们都知道这个map对不对。就是MR里边的map draw啊,知道吧,给我回一下,扣个一,防止大家都睡着了是吧。是不是听了一会儿睡着了啊?Maybe doing?对,大家在微信群里面回一下map这个东西呢,大家都是知道的,对吧,大家都知道的好,呃,那map呢,往往我们都知道它是用于这个大表join小表,然后把小表加到缓存,对吧,人家是问到一个问题啊,人家问到一个问题,问到什么问题呢?假如说不用你考虑这个内存。
02:10
不用你考虑内存,反正足够对吧,然后呢,两个大表进行招引。两个大表进行照引啊,然后呢,我们。把其中一张大表放到缓存做成map join,也就是说我把那个值啊,它map针对于小表,不是有个25兆的值吗?我把那个值调的特别大。对吧,啊,直到比。假如说AB2张表大表对吧,它俩数量肯定不一样,然后呢,我把这个值呢,调的比其中一个相对于说比较小的那个大表大一点,对吧,那这样的话,它就会把其中一张表缓存到这个内存,形成一个ma。对吧,你不用考虑内存的使用量啊,内存绝对够,那他可能问的是那这个。效率高不高啊?
03:02
二。然后为什么。刚才所说的一样,对吧,假如说一个G就够了,你用两个G3个G啊,或者四个G,反而有可能整个任务会变慢,那为什么会变慢呢,对吧。那不就是这个问题吗?为什么它会变慢呢?你不变快就算了,为什么还会变慢呢?有没有同学能说一说?大家觉得是什么原因导致的?因为全表扫描。因为全表扫描。不对,那你不做,你就不不做全秒扫描了吗。
04:07
不做map draw的时候,这不还是得做这个全秒扫描吗?我两张表,这张join你还能扫部分数据啊。增加网络,增加每个map都要下载一份大表的数据,还有呢,还有同学是怎么理解的这个问题?啊,就前两天有学生问到了。被问到了。
05:04
没有,同学说了。只有两个同学说一说啊,其实向总这个说的没问题啊,每个map都要下载一份大表的数据,对,因为你要做缓存,那还有一个点在于什么呢?在于我们申请资源。非常时。因为大家发现到一个问题啊,如果说我们用雅安模式,不用这个本地模式去运行一个任务的时候,我们明明每一次那个表呢都比较小。但是呢,他时间很长,为什么?因为他要去启动这个任务,主要就在申请资源对吧,调度资源,那如果说咱们做的一个大表也给他缓存下来,那申请资源的时间也会非常长,第二个就是向总所说的每一个map都要有一份这个大表的数据,然后呢,有网络IO对吧,有网络IO会增加。
06:08
啊,主要是这样的一个点啊,当然这个地方你肯定不用说内存对吧,不够,因为人家都告诉你了资源,你不用不用担心,资源是绝对足够的,对吧?这就刚才我们所提到这个事啊,正好想起来了,前两天有那个025有学生问我这个问题,他被面试官问到了,对吧?你要知道一下这个事啊好,那这是最优的,在讨论其他的,那如何去配置最优的这个内容呢?对吧?那我们提交方式呢,为pro job雅安的pro job模式分配资源的时候呢,可以在脚本当中用fli任务启动指去指定,对吧?那这个呢,我们之前就说过了啊,当然如果说你是这个,呃,雅安session或者说stand alone模式,那这个资源配置呢,主要是在我们的配置文件里面就要写好一个task manager。对吧,呃,指定多少内存,指定多少内存对吧?然后你的任务呢,里边会自带的会写上我们需要多少的slot,对吧,它会根据你要的lo去启动这个去申请资源,去task manager去拿对吧?好,那这里面呢,是这样的一个内容啊,其实现在呢,我们用的是generate client的模式,那所有的配置信息呢,都可以通过这种杠B的方式。
07:22
可以通过这种杠地的方式,那这个呢也比较好找,那也就是说我怎么知道有哪些东西对吧,第一我们在这边呢,给大家放了一个链接。我给大家放了一个链接,这个链接怎么来的,我要告诉你啊,这样。来,我把这个开一下,这其实比较简单,CD到OD。Model对吧,然后呢,Flink随便把local还是牙都行啊,因为我们要运行它啊,我们直接令flink回车。你直接回车,那那这里面呢,就是所携带的一些参数啊,呃,当然呢,它有不同的参数,什么意思呢?就是说它这里边有wrong的,还有这个list对吧?啊cons啊,就是取消掉这个任务的,关闭这个任务的啊,就类似于这样子的,好round这里边呢,呃,那我们看一下它的一个内容。
08:12
对吧,它的内容,然后呢,这边都是它的一个参数,你可以去看一下对吧?啊,你可以去看到里边这个参数的一个解释,然后这边说了for针对一个可过端的一个模式,对吧,那杠D-D呢,有个好处在于part等于value这种方式来传参数,对吧?用杠D这种方式来传传参数啊,那么它这个内容呢,在这。对吧,就是这个配置信息啊,你从文档当中就是这个地方。对吧,啊,去查一下它有哪些配置信息,他都解释一张图表嘛,对吧,我们可以来稍微来看一下啊。大家知道这种东西从哪来的,对吧?是们让它下载着吧,是吧,我们就往后聊啊,也就是说这里边呢,我们知道配置东西啊,配置东西可以配置这个雅安队列,一般来说我们配置的就这些东西啊,它是雅安队列对吧,然后呢,这个呃。
09:05
TM的一个大小重manager task manager啊,以及slo的一个,每个task manager指定的slo数量,因为将会影响到我们启动多少个slot,启动的多少个slot,对吧,内存的一个配置,一般来说,呃,对于我们的drop而言。两到四个G也就够了啊,两到四个G也就够了。对吧,那另外对于我们的帕麦而言,两到八个G,那这个范围还挺广的,两个G跟八个G还差了四倍了,对吧,那这个东西具体给多少,要怎么去看呢。对吧,要怎么去看呢。这个在生产环境当中,我们是测出来的,不是一个固定的值,因为你是实时业务嘛。
10:04
对吧,实时业务他呃有高峰期,那你每个公司的高峰期可能不太一样,对吧,你是测出来的。啊是测出来的,那我们最后给大家的数据量呢,其实一个套manager给两个G就够了。一个task manager给两个G就够了,对吧,那另外就是说每一个task manager里面lo的数量。啊,塑料的数量要几个对吧?那么这个地方大家还记不记得,在我们配置雅安的时候,我们可以给这个container去配置它最大内存和一个container。使用多少个CPU?有同学记得这个这个内容吗?其实在我们的什么呢?在我们的雅安当中。大家知道默认的一个container最大的资源是多少吗?有同学知道吗?
11:05
8G。对八个G8核吗。啊,两核啊,答案都是乱的了对吧?啊,那至少你们答出来八盒两盒的应该告诉我是这个点,就是说你知道有这个配置文件。对吧。有四盒。你们是知道有这个配置信息的,其他同学可能很多同学不知道有这个配置信息是不是。哎,还有这个container启动一个container多少核,默认多少核对吧。是不是其他同学告诉我,是不是连这个参数都不知道?我说的有没有错?
12:01
对吧,所以为什么要提到这个事情呢,注意一下啊,在这。这个点啊,这个点往往我们配的与容器的合数1:1或者1:2,一个和两个slot,或者说一个和一个slot,因为未来我们的一个task manager啊,一个启动一个task manager,它是不是要一个contain。对吧,要一个container。啊,那container呢,最大的是八个里,最大八个里,所以说我们刚才说了两到八个里,你不要超过这个值,当然你要超过这个值也可以,你要把这个container。调高才可以对吧,因为它是限制的最大值,限制的最大值这个要注意一下对吧?好那之后呢,嗯,Container配置的除了这个内存之外,还有核数,假如说它配的是两个核,我们自己配吗?可以改啊,你配一个核配两个核都行,然后我们这边要指定的时候呢,注意它的指定所有的数量的时候,要配成1:1或者1:2啊,你资源够的情况下就1:1,资源稍微差一点的就1:2。
13:07
啊,1:2的话,那就会呃,两个slot里边呢,会同时运行两个任务嘛,对吧?啊,那这个时候呢,它的一个运行起来就会比较慢一点,因为它两个任务都在里边去执行,只有一个,只有一个这个CPU,它会产生这个资源的一个争抢,对吧?啊,那最好的肯定是1:1,当然这个也要看公司的一个资源,那1:2呢,其实可以接受的啊,是可以接受的,OK吧,这是我们关于它这个内存的一个配置情况啊,特别是这个参数一定要注意啊,这个参数对吧,它还跟我们雅安的配置信息是相关的啊,它这个也也有关系啊,这两个都跟雅安的有关系,因为你超过八个G以后,你就要改雅安的配置信息了啊,要不然不行,因为雅安那边container呢,它是。它是这个配置最大值对吧,主要咱们用的还是雅安的模式,如果说咱们用的是这个三模式,那其实跟雅安那个配置信息当然没有任何关系了。
14:07
对吧,就是由我们的flink康里边来决定的啊,如果我们用的雅安,那你要时刻关注着雅安这边它的一个情况,对吧?啊,这个要注意一下啊,好,这是我们所看到它的一个内存的一个配置,还是关于内存的面,一般不用太管啊,因为在生产环境当中,我们不会用那个memory的一个state back,不会用内存的状态后端,所以既然我们不用内存状态后端,其实drop manager它的一个内存使用量啊,一般不会特别高,对吧?所以我们一般给两到四个G其实就够了啊,两到四个G就够了啊,不用给那么高,OK吧,这是我们所看到内存的一个设置啊。
我来说两句