Presto進(jìn)行大批量的數(shù)據(jù)計(jì)算阿浓。一開始是串行執(zhí)行每個(gè)query,需要很長(zhǎng)的時(shí)間才能計(jì)算完成蹋绽。查看服務(wù)器占用以后芭毙,發(fā)現(xiàn)資源利用率很低,因此卸耘,決定使用并行計(jì)算退敦,提高資源利用率。
Presto集群配置情況:
角色 | cpu | 內(nèi)存 |
---|---|---|
coordinator | 4核 | 16G |
worker | 8核 | 32G |
worker | 8核 | 32G |
問(wèn)題與分析
當(dāng)開啟并行以后蚣抗,發(fā)現(xiàn)presto出現(xiàn)了重啟的現(xiàn)象侈百,并且并行的任務(wù)數(shù)越多重啟的頻率越頻繁瓮下,并且參考https://cloud.tencent.com/developer/article/1156796調(diào)整presto內(nèi)存參數(shù)之后問(wèn)題依舊。
配置如下:
jvm.config:
-Xmx 15GB
config.propertities:
query.max-memory 2GB
query.max-memory-per-node 1GB
resources.reserved-system-memory 4GB
觀察了worker的內(nèi)存的占用情況钝域,沒(méi)有發(fā)現(xiàn)異常讽坏。
查閱coordinators所在機(jī)器的系統(tǒng)日志發(fā)現(xiàn):
Out of memory: Kill process 324 (presto-server) score 373 or sacrifice child
[ 9138.843290] Killed process 324, UID 500, (presto-server) total-vm:13818884kB, anon-rss:6081652kB, file-rss:692kB
[10657.363339] barad_agent invoked oom-killer: gfp_mask=0x201da, order=0, oom_adj=0, oom_score_adj=0
[10657.366892] barad_agent cpuset=/ mems_allowed=0
[10657.366895] Pid: 1561, comm: barad_agent Not tainted 2.6.32-573.el6.x86_64 #1
顯然,因?yàn)檎加昧诉^(guò)多的內(nèi)存例证,系統(tǒng)的oom-killer直接將presto-server進(jìn)程殺掉路呜。經(jīng)過(guò)咨詢騰訊云發(fā)現(xiàn),jvm.config的配置不僅在worker上生效也在coordinator上生效织咧。因?yàn)镻resto是master模式的胀葱,主節(jié)點(diǎn)上的coordinator要負(fù)責(zé)分析邏輯計(jì)劃,安排執(zhí)行物理計(jì)劃笙蒙,以及下發(fā)woker的請(qǐng)求抵屿,presto的master比core(worker)任務(wù)其實(shí)更重的。在并行數(shù)較多的時(shí)候捅位,coordinator內(nèi)存占用增長(zhǎng)轧葛。
解決
升級(jí)coordinator配置到8核32G,問(wèn)題解決艇搀。