react網(wǎng)站開發(fā)介紹東莞seo項(xiàng)目?jī)?yōu)化方法
什么是“彈性”?
一般對(duì)于分布式系統(tǒng),“彈性”指的是可以根據(jù)計(jì)算規(guī)模進(jìn)行動(dòng)態(tài)伸縮的特性。當(dāng)計(jì)算量增長(zhǎng)時(shí),可以動(dòng)態(tài)增加資源來滿足計(jì)算需求,而當(dāng)計(jì)算量減少時(shí),又可以降低資源配置來節(jié)約成本。
參考:什么是彈性伸縮ess_彈性伸縮(ESS)-阿里云幫助中心
我們?cè)诳匆幌翿DD定義:Resilient Distributed Datasets,譯為彈性分布式數(shù)據(jù)集,是一種基于集群內(nèi)存計(jì)算的一種抽象。?
所以從定義上看,RDD也是基于分布式系統(tǒng)的,主要是通過集群的內(nèi)存資源來進(jìn)行數(shù)據(jù)緩存與計(jì)算的,所以RDD的彈性是基于數(shù)據(jù)量的變化,可以動(dòng)態(tài)的增加或者減少相應(yīng)的資源(比如內(nèi)存)來滿足計(jì)算需求。
RDD的彈性體現(xiàn)
RDD的Partition和Partitioner是彈性的基礎(chǔ)
Map端input split決定了Map端的分區(qū)數(shù),分區(qū)數(shù)進(jìn)一步?jīng)Q定了map階段task的數(shù)量,Shuffle的Map階段才使用的分區(qū)器partitioner,又決定了reduce階段task的數(shù)量。
分區(qū)的動(dòng)態(tài)可調(diào)是彈性的體現(xiàn)
可以根據(jù)數(shù)據(jù)量的大小,通過repartition、coalesce算子來增加或者減少分區(qū)數(shù),來決定Task數(shù)的多少。
對(duì)應(yīng)的計(jì)算資源調(diào)整,可以通過提交任務(wù)時(shí)的參數(shù)來調(diào)整,也可以設(shè)置成動(dòng)態(tài)調(diào)整方式。
容錯(cuò)屬不屬于彈性?
容錯(cuò)是用來保障穩(wěn)定性的,劃分到“高可用”更合適,跟彈性沒有太大關(guān)系。
比如:根據(jù)血緣對(duì)RDD進(jìn)行出錯(cuò)后的恢復(fù),Stage、Task失敗的重試等。
主從架構(gòu)屬不屬于彈性?
比如BlockManagerMaster和BlockManager是主從架構(gòu)的,這個(gè)屬于分布式系統(tǒng)的基本架構(gòu)設(shè)計(jì),屬于系統(tǒng)層面的彈性,不屬于RDD層面的彈性。