開源SQL in Hadoop解決方案:我們處于什么位置?
隨著Facebook開源了最近發(fā)布的Presto,已經(jīng)非常擁擠的SQL in Hadoop市場變得更加錯綜復雜。一些開源工具正在努力獲得開發(fā)者的注意:Hortonworks 圍繞著Hive創(chuàng)建的Stinger、Apache Drill、Apache Tajo、Cloudera的Impala、Salesforce的Phoenix(用于HBase)以及現(xiàn)在的Facebook Presto。
已經(jīng)在產(chǎn)品環(huán)境中使用Hadoop的組織需要交互式的SQL查詢支持,同時能夠與已有的BI工具進行平滑的集成。來自于eBay的Vijay Madhavan在他的博客Hadoop場景中的SQL一文中聲稱:
現(xiàn)在大部分基于Map-Reduce的分析系統(tǒng)能夠在非交互式和批量SLA領域良好地工作,包括當前版本的Hive、Pig、Cascading。許多產(chǎn)品正在努力通過提供交互式“SQL in Hadoop”解決方案支持實時交互式SLA。
SQL in Hadoop解決方案的用例包括支持交互式ad-hoc查詢;支持使用MicroStrategy 或者Tableau 這樣的BI系統(tǒng)進行報表/可視化;支持多來源(multi-source)數(shù)據(jù),例如HDFS中的行為型數(shù)據(jù)必須被連接到RDBMS或者其他來源中的人口統(tǒng)計數(shù)據(jù)。 |
很多這樣的SQL in Hadoop解決方案在某些方面有共同點:
- 在元數(shù)據(jù)層面上,好像HCatalog/Hive Metastore將它們自己制定成了跨不同數(shù)據(jù)源管理模式事實上(de-facto)的標準。
- 然后有某些數(shù)據(jù)格式,例如Parquet和ORC,它們對于選擇的工作負載而言正在變得越來越流行,同時在自然環(huán)境中使用的也越來越廣泛。
- 大部分解決方案好像都支持各種各樣的ANSI SQL(不同的版本:1992、1999、2003)。
上面幾點可以幫助用戶在不同的SQL in Hadoop解決方案之間遷移,不會有很多令人頭痛的問題。但是也有一些值得注意的區(qū)別,如下所示:
- 解決方案中的一部分是由Apache支持的,同時也伴隨著社區(qū)的支持(Stinger、Drill、Tajo);其他的則是由單獨的實體組織擁有(Impala、Phoenix、Presto)。
- 另外,有一部分解決方案在數(shù)據(jù)源方面有一些限制,它們能夠查詢Hadoop生態(tài)系統(tǒng);而另一些從架構的角度看更加靈活,可以查詢關系型數(shù)據(jù)庫和NoSQL數(shù)據(jù)存儲(Presto、Drill)。
- 另一點是允許在數(shù)據(jù)上執(zhí)行的操作不同:有一些是純(分布式)查詢引擎,而另一些則允許執(zhí)行更新操作。
在過去的10到18個月中,有越來越多的人和商業(yè)實體已經(jīng)決定嘗試一下,對存儲在Hadoop中的數(shù)據(jù)實現(xiàn)低延遲、ad-hoc SQL訪問。無論怎樣,從長遠來看由于重疊的用例和環(huán)境喜好的不同有適合多種SQL in Hadoop解決方案生存的空間。