摘要:典型代表是,這種系統的特點是擴展性和容錯性好,但性能低下。借鑒分布式數據庫思想。具體見參考資料,下載,下載是韓國大學數據庫實驗室開源的基于的分布式數據倉庫,目前是的二級項目。此外,使用進行資源管理。
1. 背景
當前,Hadoop之上的SQL引擎已經非常多了,概括起來有兩類系統,分別是:
(1)將SQL轉化為MapReduce。典型代表是Apache Hive,這種系統的特點是擴展性和容錯性好,但性能低下。為了彌補SQL on MapReduce的不足,google提出了Tenzing(見參考資料[3]),與Hive不同,Tenzing充分借鑒了MapReduce和DataBase的優勢,首先,它對傳統的MapReduce進行了優化(比如Map 可以不寫磁盤,Reduce可不必排序等),使其性能更高,采用MapReduce一大優勢是使Tenzing具有了很好的擴展性和容錯性,Tenzing論文是這樣表述的:
“Thanks to MapReduce, Tenzing scales to thousands of cores and petabytes of data on cheap, unreliable hardware. We worked closely with the MapReduce team to implement and take advantage of MapReduce optimizations.”
其次,它借鑒了傳統database的優勢,嵌有一個cost-based 優化器,以對SQL查詢計劃進行充分優化。
(2)借鑒分布式數據庫思想。典型代表是Google Dremel、Apache Drill和Cloudera Impala,這類系統的特點是性能高(與Hive等系統比),但擴展性(包括集群規模擴展和SQL類型支持多樣性)和容錯性較差,Google在Dremel論文(見參考資料[4])中這樣描述Dremel的適用場景:
“Dremel is not intended as a replacement for MR and is often used in conjunction with it to analyze outputs of MR pipelines or rapidly prototype larger computations.”
也就是說,Dremel并不是用以取代MR的,而是彌補MR不足,通常用于分析MR產生的數據(這些數據量小,處理這些數據時,對SQL表達能力和框架容錯性要求低)。
Apache tajo(具體見參考資料[1][2],tajo ppt下載,tajo paper下載)是韓國大學數據庫實驗室開源的基于YARN的分布式數據倉庫,目前是Apache的二級項目。Tajo的設計思想類似于Tenzing,它充分借鑒了MapReduce和DataBase的優勢,使其具有Hive的擴展性和容錯性好的優點,但同時性能比Hive高不少。
2. Tajo設計架構Tajo采用了Master-worker架構,具體如下:
(1) TajoMaster:為客戶端提供查詢服務和管理各個QueryMaster。
(2) QueryMaster:負責一個query的解析、優化與執行,它與多個task runner worker協同工作,完成一個query的計算。
如下圖所示,Tajo采用傳統數據庫技術開發了SQL解析器,包括SQL解析,生成查詢計劃、優化查詢計劃、執行查詢技術等,但與傳統數據庫不同,Tajo最終執行查詢計劃時借鑒了MapReduce的設計思想,它將查詢計劃轉化為一系列任務,這樣,執行查詢計劃實際上就是執行這些任務,而每個任務是一個計算單位,同Map Task和Reduce Task一樣,它可以重復執行、有進度匯報等,這樣,Tajo可以直接使用MapReduce中的容錯、推測執行等機制。此外,Tajo使用YARN進行資源管理。
我在前一篇博文《Apache Tez:一個運行在YARN之上支持DAG作業的計算框架》中介紹了Tez,其中談到Hive+Tez,經Tez優化后的Hive是一個非常有前景的項目,此外,Tajo也談到,將來不排除使用Tez作為底層計算框架的可能:
Besides, Tez has some overlapping functions with Tajo. However, Tez is in the pre-alpha stage and may be a prototype. When Tez becomes feasible, Tajo could use Tez as an underlying framework according to the applicability. However, Tajo will still use its row/native columnar execution engine and its optimizer. Tajo may be potentially the first application of Tez.
真正可能取代Hive的是Tenzing或者Tajo這樣的系統,而不是類似Dremel或者Impala的系統。后者在擴展性、SQL表達能力(主要是它的嵌套存儲模型導致的)和容錯性等方面遠遠差于Hive/Tenzing/Tajo,正如Dremel論文所述,Dremel通常與MR結合使用,設計動機并不是取代MR,而是使某些場景下的計算更加高效。此外,Dremel和Impala是一種計算系統,它們需要計算資源,卻沒有集成到當前發展迅猛的資源管理系統YARN中,這意味著,如果采用Impala這樣的系統,你只能多帶帶搭一個獨立的專有集群,無法做到資源共享。即使Impala成熟了,如果Hive的取代品(比如Tajo)沒有成熟,則長期時間內,大部分公司仍然主要采用Hive(這時候,Hortonworks的Hive+Tez就有用武之地了)進行大數據處理,而Impala僅用于進一步處理Hive輸出的結果或者用于某一類適合場景的應用(畢竟這類系統的SQL表達能力有限,容錯性和擴展性差)。
就Tajo而言,目前活躍度很低,只有韓國大學的數據庫實驗室的幾個人在開發,離真正的可用還有很長時間,但它已經邁出了第一步,即成為Apache的項目,讓更多的人參與進來。
4.參考資料Tajo’s slide
Tajo: A Distributed Data Warehouse System on Large Clusters.
Tenzing: A SQL Implementation On The MapReduce Framework
Dremel: Interactive Analysis of Web-Scale Datasets
by 西成懂 under CC-BY
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/35713.html
閱讀 2843·2023-04-26 01:02
閱讀 1863·2021-11-17 09:38
閱讀 791·2021-09-22 15:54
閱讀 2899·2021-09-22 15:29
閱讀 888·2021-09-22 10:02
閱讀 3432·2019-08-30 15:54
閱讀 2007·2019-08-30 15:44
閱讀 1586·2019-08-26 13:46