00:00
那除了前面提到的一些东西啊,建表时注意事项,那还有咱们在呃配置文件要指定一些参数有哪一些呢?其实大家想想咱们MR优化还优化是bug优化,Flink优化。一一大半的事在干什么?调参数呗,但前提是你知道要调什么,怎么调啊?那可Li的house的参数在哪两个文件呢?一个是config,一个是有。那路径呢,刚才其实看过了嘛,在哪呢?ETC卡house德下面,然后你瞅一眼这两个,那么大家觉得咱们常规配置应该写在哪里,比如说什么内存限制啊,进程啊,还有什么呃,最大什么,什么查询数啊等等等等应该在哪里,大家觉得conve是吧?啊不是在uity里面。
01:01
那这两个配置文件我仔细大概说一下吧,这个是什么服务端的配置,它的使用跟咱们其他方面还不太一样,就像我之前讲的,比如说最大使用内存十个G,在哪配的呀?你配过吗?没有,另外你在服务端文件也找不到。他在哪呢?在这里。它是通过控制每个用户的。一些参数来限制它,比如说为什么我如果是我的话,可能到了三点多个G,它就报内存超过了,超过限制,为啥呢?因为我的机器内存只有这么大,默认最大限制是十个G。那这个时候他就爆了,他限是最大,并不是说一启动就占用对吧,最大,你那这些这种限制都在这里U好那一个配置能不能在两个里面都出现呢,可以。
02:04
它是这样啊,在这个配置文件里面指定的用户的默认配置路径,也就配置文件它指向谁啊,指向这个,所以呢,咱们的一些配置在这指定就行了,那如果他找不到这个用户配置文件。那么就采用自个儿的配置。所以说有些配置你两边都可以写,但是规范来讲,大部分写在U。好吧,那比如说我让大家看一个,我这里啥都没改吧,我不是变魔术啊,我啥也没改,你看这玩意是啥。对啊,这配置文件是谁啊?他是哪个用户啊,啊,这也不是用户,他是默认的配置,你看这里都告告诉你默认配置。啊,所以这个跟咱们其他框架不太一样啊,它多个配置文件,而且你一看以为是在con里面,其实在U里面啊,你看这个你数一数嘛,这个是字节数嘛,去掉三个0K,去掉三个零兆,去掉三个0G,十个G左右。
03:14
好,那么在这边给到一个链接来。就防止大家找不到嘛,因为确实。它这个配置文件从直观来看感觉会比较乱一点,好两个链接我分别打开,其实就是什么呢,要不要点一遍呢。点一遍吧,省得他未来改版,大家链接用不了了,这是不是官网?点什么文档?大家发现没有什么框架东西,点文档对吧?啊,这个套路大家要懂,那接下来这么一堆东西。呃,比如说刚才我们顺便说提一嘴啊,咱们提到那很多数据集在哪看呢。开始这里有一个什么。
04:02
啊,我先别展开。智力智力级,那咱们用的是哪一个呢?来点开,你看有这么多个。啊,当然这个不是在介绍嘛,是吧,有这么多种,那他们所谓的什么1亿行,800多万行,100多万行的数据集,通通是这个。那除了这个之外,还有这么多种呢,甚至我记得有一个是十个亿的,10亿条的啊。你在这里都可以去下载啊行,先不提这个事儿了,这跟现在没关系,那咱们点哪呢?点这里。操作点开往下拉,这边往下拉一点,这边有两个东西,一个是这个,一个是这个什么什么三呢。什么configuration,你看这个是谁的?Server服务端,这个对应就是咱们con文件里面服务端的配置,而且是不能被覆盖。
05:03
不能被覆盖,一旦指定不能被覆盖,也就是说你在呃,你的客户端里面通过set参数等于多少这种方式是无法覆盖它的啊,就写死很死的那种,所以咱们一般参数都放在后面,这个叫setting,这个指的是谁啊U,那咱们的路径打开了两个路径,你仔细看看。这是server对吧,这对应的是con文件,那这个呢,纯粹的sentence,这对应的是us,好了,这是一个介绍啊,那我们分别来看一下啊,呃,先看一下这个server,也就是你点这里server,然后这里有两个,一个是介绍啊,我从这点吧。Yeah。他指的这个文件啊,找这啊,你要自己去找,找半天找晕了,我也是找了好一会,但发现怎么乱七八糟的,后来发现原来是这样。
06:06
那另外一个你也瞅一眼setting,既然看都看了对吧,看一下他的介绍。谁呀?好行了,那我就不再点了,呃,那如果要看具体的配置项点哪一个呢。比如说这个server,我们刚才是看的它,对吧,下面这个就是它包含的配置项,点它就进入到我给的链接了啊好,你看我随便拉一拉。这是不是参数。这默认值参数。你看怎么配,都告诉你了。这种都是参数啊,是con文件的,那你再看看settings,你看拉这个进度条多不多。你先别管有什么内容是不是很多啊,相比这个而言啊,那行,那咱们分几个,这是一个怎么去找啊,为什么要介绍这个呢?呃,就是有一句话叫什么授人以鱼。
07:16
不如授人以鱼,不是黄鲤鱼绿鲤鱼啊,我也说不清,说不明白。我这的参数可能你未来用完了之后还有些想设其他的怎么找,开车去找啊,你就不用费时间的啊,省事啊。行,那我们来看一看吧,那参数这一块我分了几个,其实主要是这两个,包括目前在企业里面注意了啊,实际使用里面也是对CPU还有内存的一些调整,最主要的是谁呢?咱们说了click耗,你出问题一般是什么?要么是CPU不够了,因为它非常吃CPU嘛,要么是内存超过限制了,那你是不是该调整啊,要么IO不行了。
08:05
因为你数据量大嘛,你平你去读写一次数据量是不是很大呀,那可能IO顶不住了,大家注意啊,一般的瓶颈出现在这里啊。CPU、内存、IO,也就是服务器的资源,那所以相应的我们就尽量的把它调整到一个最优参数。那我们先看一个CPU的一个资源,CPU首先我列了好几个,这几个是基本,嗯,不管你怎么样都会去调的哈,都会去调的,那首先第一个是什么线程池的大小,Background啊不background。后台线程池的大小,这个默认是多大呢?16。那么大家注意,咱们一种表引擎是不是叫mer tree啊,合并数啊,那你想想合并是单线程执行吗?肯定不是,既然吃CPU说明他啥都想分开跑对吧,那他默认呢是16,那如果不到16呢,其实大家已经知道了吧,之前看执行计划,我这里打印的是不是都乘以二啊。
09:10
因为我这台机器只有两个啊,只有两个不够,那就当天有多少用多少算多少啊,那你想想你生产服务器配置是多少,来想一想啊,实际问题啊,来128个G,然后呢,20和40线程好,那你现在让你配这个线程池大小你配多少?40就行了。40就行了,来我这边标红了啊。允许的前提,什么叫允许的前提下,你这台机器没有其他服务,其他方家占用你的资源,所以官方是建议可利可号单独部署,不要跟那些什么雅NHDFS部署在一起啊,那资源为什么不要啊?克利house这么占资源是不是很可能把你集群东西顶过?所以你在生产上要注意这一点啊,尤其要注意啊,尽量就是拆分开啊,它也不依赖于雅M嘛。
10:13
那这边是CPU个数的两倍,什么意思啊,咱们服务器不就是20核40线程吗?那20的两倍不就40吗?因为一般一核可以虚拟化成两线程吗。对不对,好了,那对我们来讲就四十四十他也不一定一次执行用完了,那相应的其他还有什么呢。高度时候的,反正也是相关的,这个它的性能池大小,呃,其实这两个你设不设都行,一般这个是必设的,如果你想控制的再细一点,把这两个也调一下啊,那这个呢是什么呢?默认也是16,也就你记住默认线程大部分配置都是16,十六十六。因为它是以什么八和16线程机器呃为例,然后默认给你设的啊,那这边我们同样也改成咱们的线程数,如果机器是40线程,你是不是也写成40啊,那这个也一样的,这个关键词是什么分布的吧。
11:18
分布式的发送就是什么分布式表介绍过吗?有吧,对吧,就这种里面用的一些线程,也是给个测试。按照咱们机器来讲啊,你要根据你的机器来啊,根据你的机器配置来啊,你不要说到时候设计你才32线程,你说我们配40,那你说不过去啊。然后这几个参数我们在官网上瞅一眼,它也有相应的介绍,那么大家觉得我应该在哪个找?这一这个是二,在一里面找,在二里面找。啊,优先在U乐里面找,找不到再去他找,因为大部分在哪里啊,在U里面你也不用特别去记哪个在哪里啊,你记住优乐是最多的。
12:09
然后搜CTRL加F。怎么样,说没有啊,那这个时候你再过来这边。再搜也没有,我看看啊,这应该我搜过呀。诶。没有吗?那我就用最终的办法了,我在这里搜。不提示啊,我去。你看。这不明明就有吗?在哪里啊,Settings里面嘛,点开哦哦,对嘛,我就说怎么是group,我刚才念的时候就是怪怪的啊,是的,后台,哎呀,我去,我昨天搜了是对的,可能不小心改到了,行,那就是在sentence里面嘛,对吧,我们重新搜啊,我就学得怪怪的来带着ground for size默认值16。
13:28
而且它一种是用在哪里呢?那你吹也就是他的生产上用的最多的最多。那同样的后面这个呢,来schedule schedule来。也是在U里面先搜,你看是不是能搜到。你看它的默认值是多少。128。那还有一个。哦,我这个可能没改掉啊,再看另外一个,这个默认是多少。
14:05
16。是吧,前面这个描述我忘了改掉了,我直接粘的是或者128,那顺便把它改一下吧。它也是设置线程数啊,线程数为谁呀。跟复制表相关的啊,同样的还有什么卡普卡迪啊,DNS什么更新啊这种啊。但是128有点高了啊,没必要。好,这是这三个啊,关于现成的核心原则就是按照TG的线程数,那还有一个东西,这个东西就是大家要关注要知道的啊,就是你可以跟别人聊的一个东西,这是啥呢?最大并发处理的请求数。也就是说我之前一直在提到每秒钟最大多少超过这个,它直接就怎么样。
15:06
直接就报错了,肯定说连接连接不上或者连接拒绝,能能想象到吧,类似的错误,那为什么提这个,你想想你的代码,你连可里卡号是咋连的,是不是有很多方式啊,在哪连啊,是不是写JDBC啊,是一种方式啊,那JDBC得做一个什么事,是不是得创建连接对象啊?那创建连接对象你是不是还得关闭啊?你想想如果你没关会怎么样?你五秒钟创建一次连接,假设你代码没写好。五秒钟创建一次连接,然后一直不关,最终连接数是不是就打满了,然后是不是就出问题了。你打满没关系,你是把click house也搞得受不了了,你他你受不了了对吧,那你其他的东西,比如说你通过啊服务器client这个命令要进去是不是也不行啊。
16:02
对吧?你的影响可不仅仅是你自己的代码跑不起来啊,你把click house服务都整的不可用了。这个是完全有可能的,所以你想想,咱们在实际应用中是B也好,Link也好。比如说Spark连接对象,咱们之前提过了,连接对象最好在哪创建呢?几个扇子for each要for part选谁这partition啊,一个分区只见一次嘛,对吧?好来flink连接对象放哪里好?放open,如果放open的话,我假设我的并行度是十,请问我的连接数有几个,是不是十个?每一个并行任务是不是open会执行一遍呢?对吧?那什么时候关呢?Close方法什么时候调用你我程序不停,你怎么会close呢?你得想着这个这个问题啊。
17:03
对吧,但是如果你写在open,你只能写在close。这是肯定的,这是一种方法,没毛病,好。还有咱们说项目里面实时实时数仓里面用的是个线程池啊,那我的建议是换成连接池啊,最好是换成德鲁伊连接池,要不然可能会出现那个关不掉的一个问题。啊,你你一不小心,这个我已经碰见过不下五个了,同学们。就实际开发啊,可能搞不定了,然后找到我,后来我一看这玩意儿就纯粹就是这个问题啊,连接的是放在哪里,关不关啊,都把请求打满了,不仅仅不仅是click out,包括这些你都要考虑到啊,都要考虑到。那这个每秒钟100这个数大家记一下啊,这这个数是呃。
18:01
比较高频比较关注的一个词啊,因为其他框架有这么低吗?每秒100,不会,但肯定尔号就是这样啊,诶又没有了,那就在这里吗。怎么又找不到了?啊。点错了不可能啊,我收到过,那就那就再来呗。出来了。一分钱给没了。这。没写错呀,我哪写错了,同学们。肯我也搜了呀,你看我再搜一遍,没搜到了。对啊,好这个参数。这个参数啊。要记得去改,那如果你不信它这里是不是没有写默认值啊,你你你已经知道是不是conflict,我就告诉大家怎么找就行了,接下来你看啊,我打开con.s么,我搜这个配置回车多少啊,配置文件有啊,如果官网没有,你就去实实战的去搜呗。
19:24
这个一般都会改,改多少了,大家注意,接下来是第二个内容啊,改多少合适,有的同学说100太少,我改1万啊,不是说你改单就行了,就像说你现在差点钱对吧,人家问你期望薪资多少,你说每日薪1000太少了,我期望是一天1万块钱。对吧,那你也得想想人家会不会给你嘛,是吧,所以你肯定不是瞎设,那我们设多少合适呢?一百五优先150。就是说先翻个一半,那如果这个时候就是说你从你的业务代码,业务场景来讲,实在没办法,就是要比较频繁,那你最多最多最好建议不要超过300。
20:10
因为肯定你耗时几千就差不多在那里了,你调高什么意义,就像我刚才讲的,你跟别人说你期望薪资多少,你说月薪100万,那是你的期望啊,那你就像你参数设成一万一样,有什么意义吗?没有啊,他照样会报错,达到了一定程度它就报错了。因为他扛不住了。甚至说服务出问题了。所以你可以什么呢?先设一百五还不行,慢慢调大,不要一下到300吧,你可以接着尝试说调180,哎,不行,我调两百五对吧,可能两百五这个数字比较吉利就好了嘛,对吧,实在不行,300如果再往高,你该想想是不是该优化代码。对吧,但是这个一般是在初期调的,大家想想这个配置文件在哪里啊,那你改的配置要不要重启啊,要啊,那你在生产上随便重启啊,对吧,随便,所以一般这个词啊,前期你可以稍微调大一点,后期还写入出现问题请求,那应该想的是优化你的代码逻辑,而不是再改判了啊好行,这个就谈到这儿啊,还有一个最大性能数,这个是什么?单个查询,这仅仅是对查询而言,能使用的最大CPU个数。
21:28
那他这个是默认是CPU核数嘛,这就我刚才那个乘以二,其实是由他影响,由他影响。单个查询吧。那这个我们找一找,我不会每次一第一次都搜不出来嘛。好哦,不对,这个是那个谁。好找一找,哎,这次有了吧,没写错吧,你看默认值。物理CPU的核数啊,大家都有,这个是什么核数,我是两核,CPU是两核。
22:11
什么叫CPU?嗯,你要这么问的话,我一下子我也答不上来,什么叫CPU,什么叫计算机,什么叫计算机,你看嘛,我处理器数量是两个,然后。每个是一盒吗?那一共就俩嘛。这个一般调多大呢?要调吗?是不用调,你是不是已经把你这台机器能用的CPU核数用完了,对吧?那如果要调,大家注意只有一种场景,公就公司能够给你提供的机器就那么多,领导又一定要求你安装click house。这种场景很常见的,你不要以为你的工作很多时候都是做一些呃,高价值的开发研发这种事,很多时候是在那吐槽对吧?领导说啊,我给你三台机器,你给我搞个什么出来,然后遇到什么遇到什么,然后你就在那疯狂的骂娘。
23:14
我这个怎么搞,然后一边骂一边搞是吧,然后接下来问一下我,哎老师这怎么办,实在没办法,那你这个时候可以考虑什么呀,你这个线程是不是写死一下不要那么大了呀,如果你的集群还有哈杜相关的组件有其他的,那你是不是比如说你设个一半呢,你的机器假设是三十二四十线程的,你是不是给他设个20啊。就好了呀,但是说资源不够你就降低一下嘛,那包括前面的一些也是啊,这几个线程啊,你机器40,然后不够用了,你是不是改成20就好了,对吧,你要这个要想明白啊。那怎么写,格式怎么写。官网其实告诉你了,是不是这种格式啊,标签语言啊X ma嘛,对吧,然后参数值是不是在两个标签中间呢啊。
24:08
那咱们这边没法调了,我的资源就这么多了,同学们,我再调整调个一。没意义啊。
我来说两句