Spark RDD概念學習系列之爲何會引入RDD?(一)

爲何會引入RDD?算法

咱們知道,不管是工業界仍是學術界,都已經普遍使用高級集羣編程模型來處理日益增加的數據,如MapReduce和Dryad。這些系統將分佈式編程簡化爲自動提供位置感知性調度、容錯以及負載均衡,使得大量用戶可以在商用集羣上分析超大數據集。大多數現有的集羣計算系統都是基於非循壞的數據流模型。即從穩定的物理存儲(如分佈式文件系統)中加載記錄,記錄被傳入由一組穩定性操做構成的DAG(Directed Acyclic Graph,有向無環圖),而後寫回穩定存儲。DAG數據流圖可以在運行時自動實現任務調度和故障恢復。

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

 1)機器學習和圖應用中經常使用的迭代算法(每一步對數據執行類似的函數);

 2)交互式數據挖掘工具(用戶反覆查詢一個數據子集)。

 基於數據流的框架並不明確支持工做集,因此須要將數據輸出到磁盤,而後在每次查詢時從新加載,這會帶來較大的開銷。針對上述問題,Spark實現了一種分佈式的內存抽象,稱爲RDD(彈性分佈式數據集)。

它支持基於工做集的應用,同時具備數據流模型的特色:自動容錯,位置感知性調度和可伸縮性。RDD容許用戶在執行多個查詢時顯式地將工做集緩存在內存中,後續的查詢可以重用於工做集,這極大地提高了查詢速度。
相關文章
相關標籤/搜索