00:00
接下来我们来聊一聊一个参数叫呃,AC的连接等待时长。在SPA作业执行中啊,E qor会从那个本地的关联的那个broke manager,这个里面就是管理咱们缓存,还有广播变量的那一些数据。那。如果本地没有,他是不是要去其他节点拉数据,也就是说在同步数据的过程当中啊,呃,会占用较大量的内存,会导致频繁的垃圾回收,比如说缓存的数据太多太大了。那如果极其大的话,大到了基本都占满了,也没使用对外缓存,那这个时候呢,可能要进行GC对吧,那我们这前面讲对外缓存的时候,也也说到了执行GC,那么这个进程就会停止工作了,专心来做垃圾清理的工作,那这个时候没有响应。那就可能无法建立一个网络连接,那一直呢,会它有一个参数是默认的超时时长120秒,那超过了这个时间,然后就失败。
01:05
那可能会报各种各样的错误,对吧,可能是文件没找到,文件丢失,丢失就是因为在拉取的过程中,由于G导致的。不一定是说文件不存在。那么这个参数呢?是这个Spark call connection a wait timeout,我们可以给大家瞅一眼官网啊,这个参数。这个参数默认值,这个参数的默认值就等于这个Spark network.timeout这里也讲了,给大家翻译一下在超车和放弃之前连接等待AK发生的时间,为了避免长时间的暂停,如GC,对吧?一般都是GC引起的。导致的不期望的超时,可以设更大的值,那它默认值是这个等于这个参数,我们是不是看它的值就行了。
02:01
我们找一下他。粘贴。好,这个参数的值默认就是120秒,而且呢,这个值是谁的默认值呢?会是这些东西的默认值。对吧,RPC的。呃,通讯时长。这些全部都是。还有包括沙的。等等等等,包括咱们刚才讲的这个参数啊,所以一般来讲,你可以只设这个参数去改一下,也可以只调整这个参数都可以啊都可以,那咱们现在也。没有去模拟一个GC的情况,就看看怎么来提交,那如果。这个参数的话,其实咱们在源码是可以找到的,来ctrl shift加F粘贴。在这里源码里面能找到这个参数,默认值就是120秒,那如果找咱们刚才这个参数啊,我们搜一下这个名字,虽然官方配置列项给到我们了,但我们在这搜是搜不到的。
03:08
对吧,这里有一行,这个是咱们自个写的AK wait,然后我把它注掉了啊。想着把它调成两秒呢,咱们来试一试它的效果啊,调成两秒试试效果。这边我也写了,默认就等于Spark network word值默认120秒,那这边呢,下面我看看做什么事啊,查了一张表,错了一个catch,然后呢,没了。对吧,咱们也只能是来跑跑一跑,玩一玩,感受一下,那在这边呢,我是这么来指定。杠杠com也可以指定另一个参数啊,另一个参数呃,300秒。那300秒的话肯定不会出问题,对吧,我把它稍作修改。比如说我把它改成一秒。看会不会报什么错啊,看咱们的程序应该是报不了错,一秒这个时间就很短很短了。
04:07
Across no fo。啊,全列名写错了是吧,那我重新考一下。这边。直接全部替换掉嘛。哎,没错呀。来试一下。那我重新打个包吧。重新打个包啊,稍等。我把他拉过来。上传覆盖掉,好再执行一遍。啊,这次没问题了,果然是包的问题。
05:01
好,我们让他跑着吧,这个呢,一秒。对于咱们的集群情况来讲,应该没有什么太大的问题啊。也没法让它产生一个GC。那或者呢,咱们可以把这个内存调到一个G试一下,对吧。等他跑完吧,就是这么一回事,就如果你发现了频繁负尔GC啊,然后呢,呃,报一些文件找不到啊,文件丢失啊类似的误,你可以考虑一下看一下Spark日志,看他到底是不是因为GC引起的暂停,然后呢,网络连接超时了,这些都可以对它做一个相应的调整。看到这个任务应该没什么毛病,一直在跑。咱们刷一下。看我们就瞅一瞅这个参数生效没有啊,我们看这个environment。
06:01
在Spark properties,你看300秒。啊,刚才想改一秒来着,现在300秒的话就没无所谓了。那这边就要等他慢慢慢慢的跑完了。同学们。这个任务跑完了,应该也没有什么异常,我们瞅一瞅,因为也没有什么GC对吧。点一下。啊,没什么太大的毛病,你看GC的时间都是零点几秒,零点几秒。那我们设的那个零三百秒啊,更没毛病了啊,更没毛病了,所以大家也可以到沃本UI上去瞅一瞅这个GC的时间啊,GC的时间,如果这个GC的时间特别长的话,咱们就可以考虑。一般不会长到120秒,那一般就出现了很大很大的问题了,我们看看其他作业的GC情况。
07:07
你看也都是,至少从咱们准备的任务来讲,都是秒级啊,甚至不到一秒。所以咱们调这个参数不会看到直接太直观的收益啊。
我来说两句