Presto性能調優的五大技巧


概述

Presto架構

Presto是一個分布式的查詢引擎,本身並不存儲數據,但是可以接入多種數據源,並且支持跨數據源的級聯查詢。

Presto的架構分為:

Coodinator:解析SQL語句,生成執行計划,分發執行任務給Worker節點執行。

Discovery Server:Worker節點啟動后向Discovery Server服務注冊,Coordinator從Discovery Server獲得可以正常工作的Worker節點。

Worker:負責執行實際查詢任務,訪問底層存儲系統。

存儲:Presto的數據可以存儲在HDFS/OBS,推薦熱數據存儲在HDFS,冷數據存儲在OBS。

內存調優

內存管理原理

Presto有三種內存池,分別為GENERAL_POOL、RESERVED_POOL、SYSTEM_POOL。

GENERAL_POOL:用於普通查詢的physical operators。GENERAL_POOL值為 總內存(Xmx值)- 預留的(max-memory-per-node)- 系統的(0.4 * Xmx)。

SYSTEM_POOL:系統預留內存,用於讀寫buffer,worker初始化以及執行任務必要的內存。大小由config.properties里的resources.reserved-system-memory指定。默認值為JVM max memory * 0.4。

RESERVED_POOL:大部分時間里是不參與計算的,只有當同時滿足如下情形下,才會被使用,然后從所有查詢里獲取占用內存最大的那個查詢,然后將該查詢放到 RESERVED_POOL 里執行,同時注意RESERVED_POOL只能用於一個Query。大小由config.properties里的query.max-memory-per-node指定,默認值為:JVM max memory * 0.1。

1、GENERAL_POOL有節點出現阻塞節點(block node)情況,即該node內存不

2、RESERVED_POOL沒有被使用

  • query.max-memory:表示單個查詢在分布在所有相關節點上能用的內存之和的最大值。
  • query.max-memory-per-node:表示單個查詢在單個節點上用戶內存能用的最大值。
  • query.max-total-memory-per-node:表示單個查詢在單個節點上用戶內存能用的最大值和系統內存量。其中系統內存是讀取器、寫入器和網絡緩沖區等在執行期間使用的內存。
  • memory.heap-headroom-per-node:這個內存主要是第三方庫的內存分配,無法被統計跟蹤,默認值是-Xmx * 0.3

注意點:

1、query.max-memory-per-node小於query.max-total-memory-per-node。

2、query.max-total-memory-per-node 與memory.heap-headroom-per-node 之和必須小於 jvm max memory 也就是jvm.config 中配置的-Xmx。

Presto內存配置

內存調優參數

操作場景

Presto由於是完全基於內存的計算,經常出現OOM,需要調整內存。

修改參數

常見OOM報錯

Query exceeded per-node total memory limit of xx

適當增加query.max-total-memory-per-node。

Query exceeded distributed user memory limit of xx

適當增加query.max-memory。

Could not communicate with the remote task. The node may have crashed or be under too much load

內存不夠,導致節點crash,可以查看/var/log/message。

並行度

操作場景

調整線程數增大task的並發以提高效率。

修改參數

元數據緩存

操作場景

Presto支持Hive connector,元數據存儲在Hive metastore中,調整元數據緩存的相關參數可以提高訪問元數據的效率。

修改參數

Hash優化

操作場景

針對Hash場景的優化。

修改參數

優化OBS相關參數

操作場景

Presto支持on OBS,讀寫OBS過程中可以調整OBS客戶端參數來提交讀寫效率。

修改參數

 

點擊關注,第一時間了解華為雲新鮮技術~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM