Google Dremel架构
Dremel 是Google 的“交互式”數據分析系統。Google開發了Dremel將處理時間縮短到秒級,作為MapReduce的有力補充。Apache推出Dremel的開源實現Drill,將Dremel的技術又推到了浪尖 上。
Dremel系統有下面幾個主要的特點:
Dremel是一個大規模系統。在一個PB級別的數據集上面,將任務縮短 到秒級,無疑需要大量的并發。磁盤的順序讀速度在100MB/S上下,那么在1S內處理1TB數據,意味著至少需要有1萬個磁盤的并發讀! Google一向是用廉價機器辦大事的好手。但是機器越多,出問題概率越大,如此大的集群規模,需要有足夠的容錯考慮,保證整個分析的速度不被集群中的個 別慢(壞)節點影響。
Dremel是MR交互式查詢能力不足的補充。和 MapReduce一樣,Dremel也需要和數據運行在一起,將計算移動到數據上面。所以它需要GFS這樣的文件系統作為存儲層。在設計之 初,Dremel并非是MapReduce的替代品,它只是可以執行非常快的分析,在使用的時候,常常用它來處理MapReduce的結果集或者用來建立 分析原型。
Dremel的數據模型是嵌套(nested)的。互 聯網數據常常是非關系型的。Dremel還需要有一個靈活的數據模型,這個數據模型至關重要。Dremel支持一個嵌套(nested)的數據模型,類似 于Json。而傳統的關系模型,由于不可避免的有大量的Join操作,在處理如此大規模的數據的時候,往往是有心無力的。
Dremel中的數據是用列式存儲的。使用列式存儲,分析的時候,可以只 掃描需要的那部分數據的時候,減少CPU和磁盤的訪問量。同時列式存儲是壓縮友好的,使用壓縮,可以綜合CPU和磁盤,發揮最大的效能。對于關系型數據, 如果使用列式存儲,我們都很有經驗。但是對于嵌套(nested)的結構,Dremel也可以用列存儲,非常值得我們學習。
Dremel結合了Web搜索 和并行DBMS的技術。首先,他借鑒了Web搜索中的“查詢樹”的概念,將一個相對巨大復雜的查詢,分割成較小較簡單的查詢。大事化小,小事化了,能并發的在大量節點上跑。其次,和并行DBMS類似,Dremel可以提供了一個SQL-like的接口,就像Hive和Pig那樣。
Drill 是 Hadoop的贊助商之一MapR發起的。Drill作為一個Dremel的山寨項目,有和Dremel相似的架構和能力。他們希望Drill最終會想 Hive,Pig一樣成為Hadoop上的重要組成部分。為Hadoop提供快速查詢的能力。和Dremel有一點不同,在數據模型上,開源的項目需要支 持更標準的數據結構。比如CSV和JSON。同時Drill還有更大的靈活性,支持多重查詢語言,多種接口。
現在Drill的目標是完成初始的需求,架構。完成一個初始的實現。這個實現包括一個執行引擎和DrQL。DrQL是一個基于列的格式,類似于Dremel。
總結
以上是生活随笔為你收集整理的Google Dremel架构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深圳燃气是国企吗
- 下一篇: 风扇升降支架分模线错位的解决方案风扇升降