天天看點

Spark RDD概念學習系列之為什麼會引入RDD?(一)

  為什麼會引入RDD?

      我們知道,無論是工業界還是學術界,都已經廣泛使用進階叢集程式設計模型來處理日益增長的資料,如MapReduce和Dryad。這些系統将分布式程式設計簡化為自動提供位置感覺性排程、容錯以及負載均衡,使得大量使用者能夠在商用叢集上分析超大資料集。大多數現有的叢集計算系統都是基于非循壞的資料流模型。即從穩定的實體存儲(如分布式檔案系統)中加載記錄,記錄被傳入由一組穩定性操作構成的DAG(Directed Acyclic Graph,有向無環圖),然後寫回穩定存儲。DAG資料流圖能夠在運作時自動實作任務排程和故障恢複。

     盡管非循環資料流是一種強大的抽象方法,但仍然有些應用無法使用這種方式描述。這類應用包括:

     1)機器學習和圖應用中常用的疊代算法(每一步對資料執行相似的函數);

     2)互動式資料挖掘工具(使用者反複查詢一個資料子集)。

     基于資料流的架構并不明确支援工作集,是以需要将資料輸出到磁盤,然後在每次查詢時重新加載,這會帶來較大的開銷。針對上述問題,Spark實作了一種分布式的記憶體抽象,稱為RDD(彈性分布式資料集)。

    它支援基于工作集的應用,同時具有資料流模型的特點:自動容錯,位置感覺性排程和可伸縮性。RDD允許使用者在執行多個查詢時顯式地将工作集緩存在記憶體中,後續的查詢能夠重用于工作集,這極大地提升了查詢速度。

本文轉自大資料躺過的坑部落格園部落格,原文連結:http://www.cnblogs.com/zlslch/p/5717055.html,如需轉載請自行聯系原作者

繼續閱讀