Spark RDD在Spark中的地位和作用如何?

千鋒武漢發表於2021-05-12

Spark RDD的核心原理

1、Spark的核心概念是RDD (resilientdistributed dataset),指的是一個只讀的,可分割槽的分散式資料集,這個資料集的全部或部分可以快取在記憶體中,在多次計算間重用。

2、RDD在抽象上來說是一種元素集合,包含了資料。它是被分割槽的,分為多個分割槽,每個分割槽分佈在叢集中的不同Work節點上,從而讓RDD中的資料可以被並行操作。(分散式資料集)

3、RDD通常透過Hadoop上的檔案,即HDFS檔案或者Hive表,來進行建立;有時也可以透過RDD的本地建立轉換而來。

4、傳統的MapReduce雖然具有自動容錯、平衡負載和可擴充性的優點,但是其最大缺點是採用非迴圈式的資料流模型,使得在迭代計算式要進行大量的磁碟IO操作。RDD正是解決這一缺點的抽象方法。

RDD最重要的特性就是,提供了容錯性,可以自動從節點失敗中恢復過來。即如果某個節點上的RDD partition,因為節點故障,導致資料丟了,那麼RDD會自動透過自己的資料來源重新計算該partition。這一切對使用者是透明的。RDD的lineage特性。

5、RDD的資料預設情況下存放在記憶體中的,但是在記憶體資源不足時,Spark會自動將RDD資料寫入磁碟。(彈性)

Spark RDD在Spark中的地位和作用如何?

一、為什麼會有Spark?

因為傳統的平行計算模型無法有效的解決迭代計算(iterative)和互動式計算(interactive)而Spark的使命便是解決這兩個問題,這也是他存在的價值和理由.

二、Spark如何解決迭代計算?

其主要實現思想就是RDD,把所有計算的資料儲存在分散式的記憶體中.迭代計算通常情況下都是對同一個資料集做反覆的迭代計算,資料在記憶體中將大大提升IO操作.這也是Spark涉及的核心:記憶體計算.

三、Spark如何實現互動式計算?

因為Spark是用scala語言實現的,Spark和scala能夠緊密的整合,所以Spark可以完美的運用scala的直譯器,使得其中的scala可以向操作本地集合物件一樣輕鬆操作分散式資料集.

四、Spark和RDD的關係?

可以理解為:RDD是一種具有容錯性基於記憶體的叢集計算抽象方法,Spark則是這個抽象方法的實現.

想要了解更多Java相關的知識,歡迎關注我喲!


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31548651/viewspace-2771581/,如需轉載,請註明出處,否則將追究法律責任。

相關文章