大數(shù)據(jù)之謎Spark基礎(chǔ)篇,核心RDD特征分析講解
RDD特征概要總結(jié):
a、RDD是Spark提供的核心抽象,全稱為Resillient Distributed Dataset,即彈性分布式數(shù)據(jù)集。
b、RDD在抽象上來說是一種元素集合,包含了數(shù)據(jù)。它是被分區(qū)的,分為多個(gè)分區(qū),每個(gè)分區(qū)分布在集群中的不同節(jié)點(diǎn)上,從而讓RDD中的數(shù)據(jù)可以被并行操作。
c、RDD通常通過Hadoop上的文件,即HDFS文件或者Hive表,來進(jìn)行創(chuàng)建;有時(shí)也可以通過應(yīng)用程序中的集合來創(chuàng)建。
d、RDD最重要的特性就是,提供了容錯(cuò)性,可以自動(dòng)從節(jié)點(diǎn)失敗中恢復(fù)過來。即如果某個(gè)節(jié)點(diǎn)上的RDD partition,因?yàn)楣?jié)點(diǎn)故障,導(dǎo)致數(shù)據(jù)丟了,那么RDD會(huì)自動(dòng)通過自己的數(shù)據(jù)來源重新計(jì)算該partition。這一切對(duì)使用者是透明的。
e、RDD的數(shù)據(jù)默認(rèn)情況下存放在內(nèi)存中的,但是在內(nèi)存資源不足時(shí),Spark會(huì)自動(dòng)將RDD數(shù)據(jù)寫入磁盤。
下面我們一起來對(duì)其關(guān)鍵特征進(jìn)行詳細(xì)分析
圖1-RDD分布式特征
分析:
RDD(Resilient Distributed Datasets)彈性分布式數(shù)據(jù)集,是分布式內(nèi)存的一個(gè)抽象概念。我們可以抽象的代表對(duì)應(yīng)一個(gè)HDFS上的文件,但是他實(shí)際上是被分區(qū)的,分為多個(gè)分區(qū)撒落在Spark集群中的不同節(jié)點(diǎn)上。比如現(xiàn)在我們的一個(gè)RDD有40萬條數(shù)據(jù),并分為4個(gè)partition,這4個(gè)分區(qū)數(shù)據(jù)分別存儲(chǔ)在集群中的節(jié)點(diǎn)1、2、3、4中,而每個(gè)partition分到10萬條數(shù)據(jù)。如圖1所示,這樣的一個(gè)RDD將數(shù)據(jù)分布式撒落在集群的一批節(jié)點(diǎn)上,每個(gè)節(jié)點(diǎn)只是存儲(chǔ)RDD的部分partition,這就是RDD的分布式結(jié)構(gòu)模型。
圖2-RDD彈性式特征
分析:
RDD的彈性特征說明,當(dāng)RDD的每個(gè)partition數(shù)據(jù)都存放到Spark集群節(jié)點(diǎn)上時(shí)候,默認(rèn)是都存放在內(nèi)存中的,但是如果內(nèi)存放不下這么多的數(shù)據(jù)時(shí),我們?cè)撛趺崔k呢?這時(shí)候RDD的彈性特征就表現(xiàn)出來了。如上圖2所示,在節(jié)點(diǎn)3內(nèi)存中最多只能存儲(chǔ)6萬數(shù)據(jù),結(jié)果我們需要存放一個(gè)partition數(shù)據(jù)為10萬,那么這時(shí)就得把partition中的剩余4萬數(shù)據(jù)寫入到磁盤上進(jìn)行保存了。而這種存儲(chǔ)的分配針對(duì)用戶是透明的,我們不用管他怎么存儲(chǔ),雖然這種存儲(chǔ)機(jī)制是有配置參數(shù)提供我們選擇的,后續(xù)深入講解時(shí)候會(huì)介紹到如何選擇存儲(chǔ)策略,這里就不加深難度了,所以,RDD的這種自動(dòng)進(jìn)行內(nèi)存和磁盤之間權(quán)衡和卻換的機(jī)制,就是RDD的彈性特征所在。
圖3-RDD容錯(cuò)性特征
分析:
***我們來看看RDD被分散的存放在集群的各個(gè)節(jié)點(diǎn)上了,那假如某個(gè)節(jié)點(diǎn)運(yùn)行時(shí)候出現(xiàn)問題,數(shù)據(jù)該怎么辦呢?這里Spark的RDD支持了強(qiáng)大的容錯(cuò)機(jī)制,如上圖3,在運(yùn)行節(jié)點(diǎn)n時(shí)候出現(xiàn)了問題,這時(shí)候就需要重新獲取數(shù)據(jù)進(jìn)行計(jì)算,那RDD將啟動(dòng)容錯(cuò)機(jī)制,嘗試尋找上游依賴數(shù)據(jù)源節(jié)點(diǎn)3來重新獲取數(shù)據(jù)進(jìn)行計(jì)算,這里深入分析將會(huì)提出另外一個(gè)概念來了,那就是DAG(有向無環(huán)圖)、進(jìn)一步了解RDD的依賴關(guān)系,與底層邏輯關(guān)系了,期待分析的時(shí)候您能光臨。