文章目錄
Presto介紹
一、Presto出現背景
二、Presto特點
三、Presto架構
Presto介紹
一、Presto出現背景
Presto是Facebook在2012年開發的,是專為Hadoop打造的一款資料倉庫工具。在早期Facebook依賴Hive做資料分析,Hive底層依賴MapReduce,随着資料量越來越大,使用Hive進行資料分析,時間可能需要分鐘級到小時級别,不能滿足互動式查詢的資料分析場景。2012年秋季,Facebook開發Presto,目前該項目在Facebook中運作超過30000個查詢,每日處理資料PB以上。Presto的查詢速度是Hive的5-10倍。
綜上,Presto是由Facebook2012年開發,基于記憶體、支援并行計算的分布式SQL互動式查詢引擎,不是資料庫,支援多種資料源,針對GB~PB資料查詢可以達到秒級傳回結果,主要用于秒級查詢OLAP資料分析場景。
Presto官網位址:https://prestodb.io
二、Presto特點
- 多資料源
Presto可以支援MySQL、PostgreSQL、cassandra、Hive、Kafka等多種資料源查詢。
- 支援SQL
Presto支援部分标準SQL對資料進行查詢,并提供SQL shell進行SQL查詢。但是Presto不支援存儲過程,不适合大表Join操作,因為Presto是基于記憶體的,多張大表關聯可能給記憶體帶來壓力。
- 擴充性
Presto有很好的擴充向,可以自定義開發特定資料源的Connector,使用SQL分析指定Connector中的資料。
- 混合計算
在Presto中可以根據業務需要使用特定類型的Connector來讀取不同資料源的資料,進行join關聯計算。
- 基于記憶體計算,高性能
Presto是基于記憶體計算的,減少磁盤IO,計算更快。Presto性能是Hive的10倍以上。Presto能夠處理PB級别的資料,但Presto并不是把PB級别的資料一次性加載到記憶體中計算,而是根據處理方式,例如:聚合場景,邊讀取資料,聚合,再清空記憶體,再去讀取資料加載記憶體,再聚合計算,再清空記憶體... 這種方式。如果使用Join查詢,那麼就會産生大量的中間資料,速度會變慢。
- 流水線
由于Presto是基于PipeLine進行設計的,是以在進行海量資料處理過程中,終端使用者不用等到所有的資料都處理完成才能看到結果,而是可以向自來水管一樣,一旦計算開始,就可以産生一部分結果資料,并且結果資料會一部分接一部分的傳回到用戶端。
三、Presto架構
Presto查詢引擎是一個Master-Slave的架構,由一個Coordinator節點,一個Discovery Server節點,多個Worker節點組成,Discovery Server通常内嵌于Coordinator節點中。Presto架構圖如下:
上圖中各個角色功能如下:
- Presto Coordinator:
- Presto Worker:
- Hive Metastore(配置Hive Connector才會有)
- 📢歡迎點贊 👍 收藏 ⭐留言 📝 如有錯誤敬請指正!
- 📢本文由 Lansonli 原創,
- 📢停下休息的時候不要忘了别人還在奔跑,希望大家抓緊時間學習,全力奔赴更美好的生活✨