【Spark】RDD機制實現模型

來源:互聯網
上載者:User

標籤:spark

RDD淵源

彈性分布式資料集(RDD),它是MapReduce模型一種簡單的擴充和延伸,RDD為了實現迭代、互動性和流查詢等功能,需要保證RDD具備在並行計算階段之間能夠高效地資料共用的功能特性。RDD運用高效的資料共用概念和類似於MapReduce的操作方式,使得所有的計算工作可以有效地執行,並可以在當前特定的系統中獲得關鍵性的最佳化。

RDD是一種有容錯機制的特殊集合,可以分布在叢集的節點上,以函數式編操作集合的方式,進行各種並行操作。可以將RDD理解為一個具有容錯機制的特殊集合,它提供了一種唯讀、只能由已存在的RDD變換而來的共用記憶體,然後將所有資料都載入到記憶體中,方便進行多次重用。

a. 它是分布式的,可以分布在多台機器上,進行計算。
b. 它是彈性的,計算過程中記憶體不夠時它會和磁碟進行資料交換。
c. 這些限制可以極大的降低自動容錯開銷
d. 實質是一種更為通用的迭代並行計算架構,使用者可以顯式的控制計算的中間結果,然後將其自由運用於之後的計算。

RDD是一個可以避免複製的容錯分布式儲存概念。取而代之,每一個RDD都會記住由構建它的那些操作所構成的一個圖,類似於批處理計算模型,可以有效地重新計算因故障丟失的資料。由於建立RDD的操作是相對粗粒度的,即單一的操作應用於許多資料元素,該技巧比通過網路複製資料更高效。RDD很好地運用於當前廣泛的資料並行演算法和處理模型中,所有的這些對多個任務使用同一種操作。

RDD機制實現的模型

RDD 機制實現了多類模型,包括多個現有的叢集編程模型和之前模型所沒有支援的新應用。在這些模型中,RDD機制不僅在效能方面能夠和之前系統相匹配,在其他方面,他們也能加入現有的系統所缺少的新特性,比如容錯性,straggler容忍和彈性。我們討論以下四類模型。

迭代式演算法

一種目前已經開發的針對特定系統最常見的的工作模式是迭代演算法,比如應用於圖處理,數值最佳化,以及機器學習中的演算法。RDD可以支援廣泛類型的各種模型,包括Pregel,像HaLoop和Twister這類的迭代式MapReduce模型,以及確定版本的GraphLab和PowerGraph模型。

關係查詢

在MapReduce叢集中的首要需求中的一類是執行SQL查詢,長期運行或多個小時的批次運算任務和即時查詢。這促進了很多在商業叢集中應用的並行資料庫系統的發展。
MapReduce相比並行資料庫在互動式查詢有非常大的缺陷,例如MapReduce的容錯機制模型,而我們發現通過在RDD操作中實現很多常用的資料庫引擎的特性(比如,列處理),這樣能夠達到相當可觀的效能。

MapReduce

RDD通過提供MapReduce的一個超集,能夠高效地執行MapReduce程式,同樣也可以指向比如DryadLINQ這樣常見的機遇DAG資料流的應用。

流式資料處理

Spark與定製化系統最大的區別是Spark也使用RDD實現了串流。流式資料處理已經在資料庫和系統領域進行了很長時間研究,但是實現大規模流式資料處理仍然是一項挑戰。當前的模型並沒有處理在大規模叢集中頻繁出現的straggler的問題,同時對故障恢複的方式也非常有限,需要大量的複製或浪費很長的恢復。特別是,當前的系統是基於一種持續操作的模型,這就需要長時間的有狀態的操作處理每一個到達的記錄。為了恢複一個丟失的節點,當前的系統需要儲存每一個操作符的兩個副本,或通過一系列耗費大量開銷的串列處理來對上遊的資料進行重放。
Spark提出了一個新的模型,離散資料流(D-Streams),來解決這樣的問題。對使用長期狀態處理的過程進行替換,D-Streams 把流式計算的執行當做一系列短而確定性批次運算的序列,將狀態儲存在RDD裡。D-Stream模型通過根據相關RDD的依賴關係圖進行並行化恢複,就能達到快速的故障恢複,這樣不需要通過複製。另外,它通過推測(Speculative)來支援對straggler遷移執行,例如,對那些慢任務運行經過推測的備份副本。儘管D-Stream將計算轉換為許多不相關聯的jobs來運行從而增加了部分延遲,然而我們證明了D-Stream能夠被達到次秒級延時的實現,這樣能夠達到以前系統單個節點的效能,並能線性擴充到100個節點。D-Stream 的強恢複特性讓他們成為了第一個處理大規模叢集特性的串流模型,並且他們基於RDD的實現使得應用能夠有效整合批處理和互動式查詢。

小結

Spark將這些模型整合到一起,RDD還能支援一些現有系統不能表示的新的應用。例如,許多資料流應用程式還需要加入曆史資料的資訊;通過使用 RDD 可以在同一程式中同時使用批處理和串流,這樣來實現在所有模型中資料共用和容錯恢複。同樣的,流式應用的操作者常常需要在資料流的狀態上執行即時查詢;在D-Stream中的RDD能夠如待用資料形式進行查詢。我們使用一些線上機器學習和視頻分析的實際應用來說明了這些用例。更一般的說,每一個批處理應用常常需要整合多個處理類型:比如,一個應用可能需要使用SQL提取一個資料集,在資料集上訓練一個機器學習模型,之後對這個模型進行查詢。由於計算的大部分時間花在系統之間共用資料的Distributed File System的I/O開銷上,因此使用當前多個系統組合而成的工作流程的效率非常的低下。使用一個基於RDD機制的系統,這些計算可以在同一個引擎中緊接著執行,而不需要額外的I/O。

轉載請註明作者Jason Ding及其出處
GitCafe部落客頁(http://jasonding1354.gitcafe.io/)
Github部落客頁(http://jasonding1354.github.io/)
CSDN部落格(http://blog.csdn.net/jasonding1354)
簡書首頁(http://www.jianshu.com/users/2bd9b48f6ea8/latest_articles)
Google搜尋jasonding1354進入我的部落客頁

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

【Spark】RDD機制實現模型

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.