Facebook 正式宣布開源 Presto —— 資料查詢引擎,可對250PB以上的資料進行快速地互動式分析。該項目始于 2012 年秋季開始開發,目前該項目已經在超過 1000 名 Facebook 雇員中使用,運作超過 30000 個查詢,每日資料在 1PB 級别。Facebook 稱 Presto 的性能比諸如 Hive 和 Map*Reduce 要好上 10 倍有多。
Faebook的資料倉庫存儲在少量大型Hadoop/HDFS叢集,随着資料量的飙升,Facebook需要一套互動性更好的資料查詢系統。2012年開始試用一些外部項目都不合适,他們決定自己開發,這就是Presto。
Presto是一套分布式SQL引擎,支援P級資料互動查詢。支援Ansi SQL查詢,包括複雜查詢,如包括聯合查詢、左右聯接、子查詢以及一些聚合和計算函數;including approximate distinct counts (using HyperLogLog) and approximate percentiles (based on quantile digest). The main restrictions at this stage are a size limitation on the join tables and cardinality of unique keys/groups. The system also lacks the ability to write output data back to tables (currently query results are streamed to the client).
Presto完全不同于Hive/MapReduce, Hive是把一條查詢分解成多個MapReduce任務分步實行,每個任務都從磁盤上讀取資料在把結果寫回去。而Presto不用Mapreduce,而是用支援SQL查詢的分析引擎,在記憶體中進行操作,以保證速度。
Presto使用Java開發,支援外部資料存儲的擴充,。
2012年秋天Presto項目啟動,2013年春天系統上線,現已成為Facebook資料倉庫主要查詢系統。現已部署超過1000個節點,有超過1000名員工使用,每天處理P級資料查詢3萬條。
Presto的資料查詢速度比Hive/Mapreduce快10倍以上。