大數據查詢闡明是云計較中焦點問題之一,自從Google在2006年之前的幾篇論文奠基云計較規模基本,尤其是GFS、Map-Reduce、 Bigtable被稱為云計較底層技能三大基石。GFS、Map-Reduce技能直接支持了Apache Hadoop項目標降生。Bigtable和Amazon Dynamo直接催生了NoSQL這個嶄新的數據庫規模,撼動了RDBMS在商用數據庫和數據客棧方面幾十年的統治性職位。FaceBook的Hive項 目是成立在Hadoop上的數據客棧基本構架,提供了一系列用于存儲、查詢和闡明大局限數據的東西。當我們還浸淫在GFS、Map-Reduce、 Bigtable等Google技能中,并舉辦領略、把握、仿照時,Google在2009年之后,持續推出多項新技能,包羅:Dremel、 Pregel、Percolator、Spanner和F1。個中,Dremel促使了及時計較系統的鼓起,Pregel開發了圖數據計較這個新方 向,美國網站空間 香港網頁寄存,Percolator使漫衍式增量索引更新成為文本檢索規模的新尺度,Spanner和F1向我們揭示了跨數據中心數據庫的大概。在Google的第 二波技能海潮中,基于Hive和Dremel,新興的大數據公司Cloudera開源了大數據查詢闡明引擎Impala,Hortonworks開源了 Stinger,Fackbook開源了Presto。雷同Pregel,UC Berkeley AMPLAB嘗試室開拓了Spark圖計較框架,并以Spark為焦點開源了大數據查詢闡明引擎Shark。由于某電信運營商項目中大數據查詢引擎選型需 求,本文將會對Hive、Impala、Shark、Stinger和Presto這五類主流的開源大數據查詢闡明引擎舉辦扼要先容以及機能較量,最后進 行總結與展望。Hive、Impala、Shark、Stinger和Presto的進化圖譜。
圖1. Impala、Shark、Stinger和Presto的進化圖譜
當前主流引擎簡介
基于Map-Reduce模式的Hadoop擅長數據批處理懲罰,不是出格切合即時查詢的場景。及時查詢一般利用MPP (Massively Parallel Processing)的架構,因此用戶需要在Hadoop和MPP兩種技能中選擇。在Google的第二波技能海潮中,一些基于Hadoop架構的快速 SQL會見技能慢慢得到人們存眷。此刻有一種新的趨勢是MPP和Hadoop相團結提供快速SQL會見框架。最近有四個很熱門的開源東西出 來:Impala、Shark、Stinger和Presto。這也顯示了大數據規模對付Hadoop生態系統中支持及時查詢的期望。總體來 說,Impala、Shark、Stinger和Presto四個系統都是類SQL及時大數據查詢闡明引擎,可是它們的技能偏重點完全差異。并且它們也不 是為了替換Hive而生,Hive在做數據客棧時長短常有代價的。這四個系統與Hive都是構建在Hadoop之上的數據查詢東西,各有差異的偏重適應 面,但從客戶端利用來看它們與Hive有許多的配合之處,如數據表元數據、Thrift接口、ODBC/JDBC驅動、SQL語法、機動的文件名目、存儲 資源池等。Hive與Impala、Shark、Stinger、Presto在Hadoop中的干系如圖2所示。Hive合用于長時間的批處理懲罰查詢分 析,而Impala、Shark、Stinger和Presto合用于及時交互式SQL查詢,它們給數據闡明人員提供了快速嘗試、驗證想法的大數據闡明工 具。可以先利用Hive舉辦數據轉換處理懲罰,之后利用這四個系統中的一個在Hive處理懲罰后的功效數據集長舉辦快速的數據闡明。下面,從問題域出發簡樸先容 Hive、Impala、Shark、Stinger和Presto:
圖2. Hive與Impala、Shark、Stinger、Presto在Hadoop中的干系
當前主流引擎架構
Hive
Hive是基于Hadoop的一個數據客棧東西,可以將布局化的數據文件映射為一張數據庫表,并提供完整的SQL查詢成果,可以將SQL語句轉換為 Map-Reduce任務舉辦運行,十分適合數據客棧的統計闡明。其架構如圖3所示,Hadoop和Map-Reduce是Hive架構的根本。Hive 架構包羅如下組件:CLI(Command Line Interface)、JDBC/ODBC、Thrift Server、Meta Store和Driver(Complier、Optimizer和Executor)。
1) Hive,披著SQL外衣的Map-Reduce。Hive是為利便用戶利用Map-Reduce而在外面封裝了一層SQL,由于Hive采 用了SQL,它的問題域比Map-Reduce更窄,因為許多問題,SQL表達不出來,好比一些數據挖掘算法,推薦算法、圖像識別算法等,這些仍只能通過 編寫Map-Reduce完成。
2) Impala:Google Dremel的開源實現(Apache Drill雷同),因為交互式及時計較需求,Cloudera推出了Impala系統,該系統合用于交互式及時處理懲罰場景,要求最后發生的數據量必然要少。
3) Shark/Spark:為了提高Map-Reduce的計較效率,Berkeley的AMPLab嘗試室開拓了Spark,Spark可看 做基于內存的Map-Reduce實現,另外,伯克利還在Spark基本上封裝了一層SQL,發生了一個新的雷同Hive的系統Shark。