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