天天看點

Hadoop的輝煌還能延續多久?Hadoop的輝煌還能延續多久?

Hadoop的輝煌還能延續多久?

發表于2012-08-27 16:03| 89045次閱讀| 來源gigaom.com| 0 條評論| 作者Mike Miller

Hadoop MapRaduce Dremel Pregel Google 大資料

摘要:Hadoop已經成為大資料的代名詞。短短幾年間,Hadoop從一種邊緣技術成為事實上的标準。而另一方面,MapReduce在谷歌已不再顯赫。當企業矚目MapReduce的時候,谷歌好像早已進入到了下一個時代。

Hadoop技術已經無處不在。不管是好是壞,Hadoop已經成為大資料的代名詞。短短幾年間,Hadoop從一種邊緣技術成為事實上的标準。看來,不僅現在Hadoop是企業大資料的标準,而且在未來,它的地位似乎一時難以動搖。

谷歌檔案系統與MapReduce

我們先來探讨一下Hadoop的靈魂——MapReduce。面對資料的爆炸性增長,谷歌的工程師Jeff Dean和Sanjay Ghemawat架構并釋出了兩個開創性的系統:谷歌檔案系統(GFS)和谷歌MapReduce(GMR)。前者是一個出色而實用的解決方案-使用正常的硬體擴充并管理資料,後者同樣輝煌,造就了一個适用于大規模并行處理的計算架構。

谷歌MapReduce(GMR)為普通開發者/使用者進行大資料處理提供了簡易的方式,并使之快速、具備容錯性。谷歌檔案系統(GFS)和谷歌MapReduce(GMR)也為谷歌搜尋引擎對網頁進行抓取、分析提供了核心動力。

再回頭看看開源世界中的Hadoop,Apache Hadoop的分布式檔案系統(HDFS)和Hadoop MapReduce完全是谷歌檔案系統(GFS)和谷歌MapReduce(GMR)的開源實作。Hadoop項目已經發展成為一個生态系統,并觸及了大資料領域的方方面面。但從根本上,它的核心是MapReduce。

Hadoop是否可以趕超谷歌?

一個有趣的現象是,MapReduce在谷歌已不再顯赫。當企業矚目MapReduce的時候,谷歌好像早已進入到了下一個時代。事實上,我們談論的這些技術早就不是新技術了,MapReduce也不例外。

我希望在後Hadoop時代下面這些技術能夠更具競争性。盡管許多Apache社群的項目和商業化Hadoop項目都非常活躍,并以來自HBase、Hive和下一代MapReduce(YARN)的技術不斷完善着Hadoop體系,我依然認為,Hadoop核心(HDFS和Zookeeper)需要脫離MapReduce并以全新的架構增強自己的競争力,真正與谷歌技術一較高下。

過濾不斷增長的索引,分析不斷變化的資料集。Hadoop的偉大之處在于,它一旦開始運作,就會飛速地分析你的資料。盡管如此,在每次分析資料之前,即添加、更改或删除資料之後,我們都必須将整個資料集進行流式處理。這意味着,随着資料集的膨脹,分析時間也會随之增加,且不可預期。

那麼,谷歌又是怎麼做到搜尋結果越來越實時呈現呢?一個名為Percolator的增量處理引擎取代了谷歌MapReduce(GMR)。通過對建立、更改和已删除文檔的處理,并使用二級索引進行高效的分類、查詢,谷歌能夠顯著地降低實作其目标的時間。

Percolator的作者寫道:“将索引系統轉化為一個增量系統……文檔平均處理延遲的因子降低到了現在的100。”這句話的意思是,索引Web上新内容的速度比之前MapReduce系統快了100倍。

谷歌Dremel即時資料分析解決方案

谷歌和Hadoop社群曾緻力于建構基于MapReduce的易用性即時資料分析工具,如谷歌的并行處理語言Sawzall,Apache Pig和Hive。但對熟知SQL的人們而言,他們忽略了一個基本事實-建構MapReduce的目标就在于管理資料處理工作。它的核心能力在于工作流管理,而不是即時資料分析。

與之形成鮮明對比的是,很多BI或資料分析查詢基本上都要求即時、互動和低延遲。這意味着,使用Hadoop不僅需要規劃流程圖,而且需要為許多查詢分析裁減不必要的工作流。即便如此,我們也要花費數分鐘等待工作開始,然後花費數小時等待工作流完成,并且這個過程也非常不利于互動式體驗。是以,谷歌研發了Dremel予以應對。Dremel是Google 的“互動式”資料分析系統,可以在幾秒鐘内處理PB級别的資料,并能輕松應對即時查詢。

Google Dremel的設計特點:

Dremel是一個可擴充的大型系統。在一個PB級别的資料集上面,将任務縮短到秒級,無疑需要大量的并發。磁盤的順序讀速度在100MB/S上下,那麼在1S内處理1TB資料,意味着至少需要有1萬個磁盤的并發讀! Google一向是用廉價機器辦大事的好手。但是機器越多,出問題機率越大,如此大的叢集規模,需要有足夠的容錯考慮,保證整個分析的速度不被叢集中的個别節點影響。 

Dremel是MapReduce的補充。和MapReduce一樣,Dremel也需要GFS這樣的檔案系統作為存儲層。在設計之初,Dremel并非是MapReduce的替代品,它隻是可以執行非常快的分析,在使用的時候,常常用它來處理MapReduce的結果集或者用來建立分析原型。 

Dremel的資料模型是嵌套的。網際網路資料常常是非關系型的。Dremel還需要有一個靈活的資料模型,這個資料模型至關重要。Dremel支援一個嵌套的資料模型,類似于JSON。而傳統的關系模型,由于不可避免的有大量的JOIN操作,在處理如此大規模的資料的時候,往往是有心無力的。

Dremel中的資料是采用列式存儲的。使用列式存儲,分析的時候,可以隻掃描需要的那部分資料的時候,減少CPU和磁盤的通路量。同時列式存儲是壓縮友好的,使用壓縮,可以綜合CPU和磁盤,發揮最大的效能。

Dremel結合了Web搜尋和并行DBMS的技術。Dremel借鑒了Web搜尋中的“查詢樹”的概念,将一個相對巨大複雜的查詢,分割成較小較簡單的查詢。大事化小,小事化了,能并發的在大量節點上跑。另外,和并行DBMS類似,Dremel可以提供了一個SQL-like的接口,就像Hive和Pig那樣。

谷歌的圖資料計算架構Pregel

谷歌MapReduce是專門為抓取、分析世界上最龐大的圖形架構-internet而設計的,但針對大規模圖算法(如圖周遊(BFS)、PageRank,最短路徑(SSSP)等)的計算則顯得效率低下。是以,谷歌建構了Pregel。

Pregel給人的印象非常深刻。Pregel不僅能高效執行SSSP或PageRank算法,更令人驚訝的是,公布的資料顯示Pregel處理一個有着幾十億節點、上萬億條邊的圖,隻需數分鐘即可完成,其執行時間随着圖的大小呈線性增長。

Pregel基于BSP模型,就是“計算”-“通信”-“同步”的模式:

  • 輸入輸出為有向圖
  • 分成超步
  • 以節點為中心計算,超步内每個節點執行自己的任務,執行節點的順序不确定
  • 兩個超步之間是通信階段

在Pregel中,以節點為中心計算。Step 0時每節點都活動着,每個節點主動“給停止投票”進入不活動狀态。如果接收到消息,則激活。沒有活動節點和消息時,整個算法結束。容錯是通過檢查點來做的。在每個超步開始的時候,對主從節點分别備份。

總結

盡管目前大資料技術的核心依然是Hadoop,但谷歌卻已經為我們展現了許多更先進的大資料技術。谷歌開發這些技術的本意并不是要立刻抛棄掉MapReduce,但毫無疑問這是未來大資料技術的趨勢。盡管已經出現了上述大資料技術的開源實作,但我們不禁要問,Hadoop的輝煌還能延續多久?(張志平/編譯)

原文連結:

Why the days are numbered for hadoop as we know it