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