Google Dremel vs. Apache Hadoop
Naresh Kumar在介紹兩者之間的區(qū)別之前,首先針對Google Dremel進行簡單的描述:
什么是Google Dremel?
Google Dremel是個可擴展的、交互式的即時查詢系統(tǒng),專注于只讀嵌套(nested)數(shù)據(jù)的分析。通過集合不同層次的執(zhí)行樹和柱狀的數(shù)據(jù)布局,他能夠在幾秒內完成在萬億張表上的聚合查詢。系統(tǒng)可以擴展到成千上萬的CPU上,滿足Google上萬用戶操作PB及的數(shù)據(jù)。
Apache Hadoop vs Google Dremel:兩者之間的不同
Dremel是個數(shù)據(jù)分析工具,經專門設計用于完成大規(guī)模查詢結構化數(shù)據(jù)集(如日志和事件文件)。它支持類SQL語法,區(qū)別在于它是只讀的。不支持修改或者建立功能,也沒有表索引。數(shù)據(jù)被列式存儲,這樣有助于提升查詢的速度。Google的BigQuery就是Dremel通過RESTful API的一種實現(xiàn)。
Hadoop(MapReduce的一種開源實現(xiàn))集合了“Hive”數(shù)據(jù)倉庫軟件,同樣允許使用SQL語句對大量的數(shù)據(jù)集進行數(shù)據(jù)分析。Hive本質上是把查詢轉換成MapReduce運算。對比使用ColumIO格式,Hive則是使用表索引的思想去優(yōu)化查詢。
Hadoop更多的則是用于批處理,這就意味著數(shù)據(jù)是運行在你已經擁有的數(shù)據(jù)集上。有數(shù)據(jù)流入時,流引擎會進行處理。“流”和“實時”通常被互換使用,這也是導致Dremel和Drill混淆的原因,通常都會把它們歸類成延時。
值得注意的是Google只是打算將Dremel作為MapReduce的一種補充,而不是替換。通過論文也可以得知,Dremel被頻繁的用于分析MapReduce的結果或者是作為大規(guī)模計算的測試。Dremel可以做那些通常需要一系列MapReduce才可以完成的查詢,但是花費的時間只是使用MapReduce的一小部分。如前所述,Dremel從速度上完全超越MapReduce。
Google Dremel vs Apache Drill
Apache Drill更像是Google Drill的開原版本。OpenDremel,另一個創(chuàng)建Dremel開源版本的項目。當然還有一些其他支持大數(shù)據(jù)快速查詢的項目,比如:Apache CouchDB和Cloudant的演變版本BigCouch。
其他一些大數(shù)據(jù)分析工具和技術
1. Storm —— Backtype開發(fā)并被Twitter開源。
2. Apache S4 —— Yahoo!開源。
而流引擎就是這些實時大數(shù)據(jù)處理系統(tǒng)(比如Storm和S4)與Dremel的最大區(qū)別,當然Dremel是專門針對查詢設計。