分布式大数据sql查询引擎Presto初识
1、背景:
Hive使用MapReduce作為底層計算框架,是專為批處理設(shè)計的。但隨著數(shù)據(jù)越來越多,使用Hive進行一個簡單的數(shù)據(jù)查詢可能要花費幾分到幾小時,顯然不能滿足交互式查詢的需求。Presto是一個分布式SQL查詢引擎,它被設(shè)計為用來專門進行高速、實時的數(shù)據(jù)分析。它支持標準的ANSI SQL,包括復(fù)雜查詢、聚合(aggregation)、連接(join)和窗口函數(shù)(window functions)。
這其中有兩點就值得探究,首先是架構(gòu),其次自然是怎么做到低延遲來支持及時交互。
2、Presto架構(gòu)
Presto查詢引擎是一個Master-Slave的架構(gòu),由一個Coordinator節(jié)點,一個Discovery Server節(jié)點,多個Worker節(jié)點組成,Discovery Server通常內(nèi)嵌于Coordinator節(jié)點中。Coordinator負責解析SQL語句,生成執(zhí)行計劃,分發(fā)執(zhí)行任務(wù)給Worker節(jié)點執(zhí)行。Worker節(jié)點負責實際執(zhí)行查詢?nèi)蝿?wù)。Worker節(jié)點啟動后向Discovery Server服務(wù)注冊,Coordinator從Discovery Server獲得可以正常工作的Worker節(jié)點。如果配置了Hive Connector,需要配置一個Hive MetaStore服務(wù)為Presto提供Hive元信息,Worker節(jié)點與HDFS交互讀取數(shù)據(jù)。
3、Presto即時查詢原理
Presto的運行模型和Hive或MapReduce有著本質(zhì)的區(qū)別。Hive將查詢翻譯成多階段的MapReduce任務(wù),一個接著一個地運行;每一個任務(wù)從磁盤上讀取輸入數(shù)據(jù)并且將中間結(jié)果輸出到磁盤上。
Presto引擎沒有使用MapReduce,而是使用一個定制的查詢執(zhí)行引擎來響應(yīng)支持SQL語法。除了改進的調(diào)度算法之外,所有的數(shù)據(jù)處理都是在內(nèi)存中進行的;不同的處理端通過網(wǎng)絡(luò)組成處理的流水線;避免不必要的磁盤讀寫和額外的延遲。這種流水線式的執(zhí)行模型會在同一時間運行多個數(shù)據(jù)處理段,一旦數(shù)據(jù)可用的時候就會將數(shù)據(jù)從一個處理段傳入到下一個處理段,大大的減少各種查詢的端到端響應(yīng)時間。特點如下:
1)完全基于內(nèi)存的并行計算
2)流水線
3)本地化計算
4)動態(tài)編譯執(zhí)行計劃
5)小心使用內(nèi)存和數(shù)據(jù)結(jié)構(gòu)
6)類BlinkDB的近似查詢
7)GC控制
4、Presto執(zhí)行查詢過程
參考:http://tech.meituan.com/presto.html
?
5、Presto安裝部署
參考:http://prestodb-china.com/docs/current/installation.html
?
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的分布式大数据sql查询引擎Presto初识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Python学习系列二十二】panda
- 下一篇: 高并发MPP查询引擎Impala初识