標籤:

spark中的RDD叫做彈性分布數據集,如何理解彈性兩個字?

今天某群里突然有位網友問了這個問題,然而這個問題並沒有誰能說出個所以然,我們一直在操作RDD,畢竟spark的核心就是對RDD的操作,不斷地transformation,最後action觸發運算,然而Resilient Distributed Datasets中的Resilient到底該作何理解?


resilient的翻譯中文意思

(1)Marked by the ability to recover readily, as from misfortune.

有復原力的:表示有隨時恢復的能力特徵的,如從災難中恢復、

我覺得是這個意思……


我對 RDD(彈性分散式數據集)的理解是這樣的:

  1. 數據集:故名思議,RDD 是數據集合的抽象,從外部來看,RDD 的確可以被看待成經過封裝,帶擴展特性(如容錯性)的數據集合。
  2. 分散式:數據的計算並非只局限於單個節點,而是多個節點之間協同計算得到。
  3. 彈性:雖然 RDD 內部存儲的數據是只讀的,但是,我們可以去修改(例如通過 repartition 轉換操作)並行計算計算單元的劃分結構,也就是分區的數量。

綜合來看,RDD 可以被理解成:能夠並行計算的數據集,後面的許多問題,例如分區劃分,分區數據計算,容錯機制,都是圍繞它來展開。


《Learning Spark:Lightning-fast Data Analysis》一書中解釋「彈性」是指在任何時候都能進行重算。這樣當集群中的一台機器掛掉而導致存儲在其上的RDD丟失後,Spark還可以重新計算出這部分的分區的數據。但用戶感覺不到這部分的內容丟失過。這樣RDD數據集就像塊帶有彈性的海綿一樣,不管怎樣擠壓(分區遭到破壞)都是完整的。


死掉了會自己活過來。。。


我感覺是。。。。一個rdd裡面partition的數目是可變的


物理分布,數據結構等都是彈性靈活的


是不是可以理解為 在一個步驟出錯了,但還能從上一個步驟里取數據,不需要從頭開始再算一遍…


推薦閱讀:

TAG:大數據 | Spark |