Hi all: 在使用zeppelin提交sql的过程中总是发现超时现象,通过定位发现有如下问题: 1、blob client 和blob server 通信时采用单客户端通行,当有比较多的文件时,比如100个,这个耗时挺大的 2、blob server 虽然有blob.fetch.num-concurrent 进行并发控制,但是blob server在moveTempFileToStore方法中采用了写锁的方式,当时并发失效。
通过本地测试,简单的调整了代码,示例如下: BlobServer: [image: image.png] ClientUtils [image: image.png] 调整后通过zeppelin 提交job后,时间由之前的几分钟到现在几十秒,并且不会随着依赖的jar的增加而线性增长。 现有如下疑问: 1、blob server 中的锁的粒度是不是过大?当并行提交多个sql,实际上也只能一个一个的执行。 2、blob server 中moveTempFileToStore 的写锁是否真的必要呢? Best wishes.
