spark中的RDD叫做彈性分布數據集,如何理解彈性兩個字?
02-07
今天某群里突然有位網友問了這個問題,然而這個問題並沒有誰能說出個所以然,我們一直在操作RDD,畢竟spark的核心就是對RDD的操作,不斷地transformation,最後action觸發運算,然而Resilient Distributed Datasets中的Resilient到底該作何理解?
resilient的翻譯中文意思
(1)Marked by the ability to recover readily, as from misfortune.
有復原力的:表示有隨時恢復的能力特徵的,如從災難中恢復、
我覺得是這個意思……我對 RDD(彈性分散式數據集)的理解是這樣的:
- 數據集:故名思議,RDD 是數據集合的抽象,從外部來看,RDD 的確可以被看待成經過封裝,帶擴展特性(如容錯性)的數據集合。
- 分散式:數據的計算並非只局限於單個節點,而是多個節點之間協同計算得到。
- 彈性:雖然 RDD 內部存儲的數據是只讀的,但是,我們可以去修改(例如通過 repartition 轉換操作)並行計算計算單元的劃分結構,也就是分區的數量。
綜合來看,RDD 可以被理解成:能夠並行計算的數據集,後面的許多問題,例如分區劃分,分區數據計算,容錯機制,都是圍繞它來展開。
《Learning Spark:Lightning-fast Data Analysis》一書中解釋「彈性」是指在任何時候都能進行重算。這樣當集群中的一台機器掛掉而導致存儲在其上的RDD丟失後,Spark還可以重新計算出這部分的分區的數據。但用戶感覺不到這部分的內容丟失過。這樣RDD數據集就像塊帶有彈性的海綿一樣,不管怎樣擠壓(分區遭到破壞)都是完整的。
死掉了會自己活過來。。。
我感覺是。。。。一個rdd裡面partition的數目是可變的
物理分布,數據結構等都是彈性靈活的
是不是可以理解為 在一個步驟出錯了,但還能從上一個步驟里取數據,不需要從頭開始再算一遍…
推薦閱讀: