00:00
那我们接下来看第二个章节资源调优,也就是咱们提交参数呢?怎么去考虑考量会更好一点,那首先我们来看一个总体的原则,那咱们如果假设以单台服务器有128G的物理内存,32个线程为例,咱们来该怎么衡量对吧?那总体原则咱们要先指定单个执行器的一个合数。啊,也就是他的核心数。那之后呢?如果假设咱们的集群资计算资源,也就雅安资源都能够给到巴克的话。那我们是不是就知道一台服务器最多可以跑几个exor,这是不是它的一个能量上限?举个例子呗。呃,咱们比如说course,咱们正常来讲设到数值不会太大,对吧,不需要太大,那比如说三到六之间,假设你设的是四。那我一台服务器有32个线程,那一个E4个线程,那是不是最多最多可以跑七个E,当然这太理想化了,因为咱们的服务器县城里不可能全部都给演。
01:12
全给他的话,那还留一些,咱们得预留一些县城给其他的服务,其他的进程对吧。这个我们就是简单做一个估算啊,一个节点最多能有几个。E,另外呢,是不是还得看你服务器有几台啊?应该具体来讲是说你的雅安部署了举台,因为咱们雅安的小D节点是不是叫node manager对吧,咱们node manager部署几台,理论上是不是都可以被用啊,被拿过来用啊,那这个时候你。一层。是不是就是总的execute数了就可以得到了。对吧,刚才单节点数量容量咱们估算过,然后几个节点一乘就是总的来了,咱们具体看呗,呃,首先driver。
02:02
Driver咱们这没有列出来,因为他呢,说实话调整的比较少。He tried。不负责具体数据的运算,除非呢,你调用了这种算子,会将数据回传给driverva,你就得考虑我回传的数据这个内存能不能顶得住啊,那一般任务是不会去collect的,对吧?那你没有collect正常你给一个G2个G,它也是没什么压力的,如果某些任务比较特殊需要的话,你适当的调大就行了啊,那我们看一下ex合数,咱们刚才讲呢,三到六之间啊是最好的那。Number ISS,这个指的就是所有的exe一共几个啊?是所有节点加起来的,那我们举个例子,咱们刚才先估算的每个节点的数对吧?假设我单台给到雅安的合数是28。就一个节点一台服务器啊,咱们是不是服务器物理是32线场啊,你咱们说了不可能全部都给他,那可能你要预留几个,也就是说给雅安28,那结合咱们上面每个E的合数是四个,那咱们最多是不可能有得到一个,一个节点可以有七个E。
03:16
对吧,那假设你的服务器有十台。那你这个最多最多number是不是只能达到70啊,所以你这个时候指定个100是不是明显就不合理对吧?那如果你担心说,哎,我不可能整个集群所有资源都给一个Spark任务,那你就去适当的去除以一个比例嘛,比如说你这个数量把它设置二十三十就好了,那你可以观察任路情况,如果还有富余,你甚至再慢慢的把它调小就OK了啊,这个咱们是先估算出最多最多几个对吧?通过这种方式你就能算出来。那最关键的还在于咱们这个memory,也就是单个,到底应该给多大的内存呢?这个往往是最麻烦的,因为你设的不好,你要么就OM了,对吧。
04:07
要么没oom,就是处理的速度特别慢啊,特别缓慢,那这个值怎么来设呢?一个最简单的方式啊,如果是粗略估算的话,咱们刚才一台服务器是吧,128G啊,那正常来讲,咱们会给雅安分配100个G啊,就一个节点给100个G,那这个时候咱们刚才估算的单节点最多ex的数量是不是七个?对吧,结合刚才的那个数字来算的话,七个,那么。你就可以估算出我一个executor,如果你要都用的话,最多分配多大内存,因为你再高了是不是没有内存给你用。也就是说这个时候我们100除以七。是不是约等于14个G。也就是说你单个你。
05:00
最多最多也只能给到14个G啊。对吧,先把一些上限都理解清楚,呃,另外如果咱们设置excu内存的话,还要注意雅安的一个参数,就是每个容器的最小最大是呃一个限制,那默认呢,雅安最容器最小内存是一个G,最大呢默认是八个G,咱们在生产中肯定是要去呃,根据需要去做一个调整的,比如说现在14个G,我要设到十个G,那你是不是得把雅安这个上限对应的也调大一点了,对吧?这个参数呢?嗯,首页嘛,咱们应该是在哈豆的配置文件ETC,哈豆咱们是不是有一个雅安杠set。对吧,这个文件呃。哎,就在这儿,就是这两个参数,一个是最小分配内存,一个是最大分配内存,那因为我这个是虚拟机嘛,啊,内存没那么多,我就调成四个G了,对吧,它默认呢是八零,呃8092多少,8192吧,啊对81928个G啊,这个默认是1024啊,我我都对它做了一个修改,这是咱们几个参数的估量。
我来说两句