1、partition數(shù)目
創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站建設(shè)、做網(wǎng)站、維西網(wǎng)絡(luò)推廣、重慶小程序開發(fā)、維西網(wǎng)絡(luò)營銷、維西企業(yè)策劃、維西品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們大的嘉獎;創(chuàng)新互聯(lián)建站為所有大學(xué)生創(chuàng)業(yè)者提供維西建站搭建服務(wù),24小時服務(wù)熱線:18980820575,官方網(wǎng)址:www.cdcxhl.comspark的輸入可能以多個文件的形式存儲在HDFS上,每個File都包含了很多塊,稱為Block。
當(dāng)Spark讀取這些文件作為輸入時,會根據(jù)具體數(shù)據(jù)格式對應(yīng)的InputFormat進(jìn)行解析,一般是將若干個Block合并成一個輸入分片,稱為InputSplit,注意InputSplit不能跨越文件。
隨后將為這些輸入分片生成具體的Task。InputSplit與Task是一一對應(yīng)的關(guān)系。
隨后這些具體的Task每個都會被分配到集群上的某個節(jié)點的某個Executor去執(zhí)行。
每個節(jié)點可以起一個或多個Executor。
每個Executor由若干core組成,每個Executor的每個core一次只能執(zhí)行一個Task。
每個Task執(zhí)行的結(jié)果就是生成了目標(biāo)RDD的一個partiton。
注意: 這里的core是虛擬的core而不是機器的物理CPU核,可以理解為就是Executor的一個工作線程。
而 Task被執(zhí)行的并發(fā)度 = Executor數(shù)目 * 每個Executor核數(shù)。
至于partition的數(shù)目:
對于數(shù)據(jù)讀入階段,例如sc.textFile,輸入文件被劃分為多少InputSplit就會需要多少初始Task。
在Map階段partition數(shù)目保持不變。
在Reduce階段,RDD的聚合會觸發(fā)shuffle操作,聚合后的RDD的partition數(shù)目跟具體操作有關(guān),例如repartition操作會聚合成指定分區(qū)數(shù),還有一些算子是可配置的。
2、spark部署模式的對比
這篇博客中對三種部署模式做了對比,請參考部署模式對比:總結(jié)如下:
mesos似乎是Spark更好的選擇,也是被官方推薦的
但如果你同時運行hadoop和Spark,從兼容性上考慮,Yarn似乎是更好的選擇,畢竟是親生的。Spark on Yarn運行的也不錯。
如果你不僅運行了hadoop,spark。還在資源管理上運行了docker,Mesos似乎更加通用。
standalone小規(guī)模計算集群,似乎更適合!
對于yarn模式下的client和cluster對比,請參考client和cluster的對比:
理解YARN-Client和YARN-Cluster深層次的區(qū)別之前先清楚一個概念:Application Master。在YARN中,每個Application實例都有一個ApplicationMaster進(jìn)程,它是Application啟動的第一個容器。它負(fù)責(zé)和ResourceManager打交道并請求資源,獲取資源之后告訴NodeManager為其啟動Container。從深層次的含義講YARN-Cluster和YARN-Client模式的區(qū)別其實就是ApplicationMaster進(jìn)程的區(qū)別
YARN-Cluster模式下,Driver運行在AM(Application Master)中,它負(fù)責(zé)向YARN申請資源,并監(jiān)督作業(yè)的運行狀況。當(dāng)用戶提交了作業(yè)之后,就可以關(guān)掉Client,作業(yè)會繼續(xù)在YARN上運行,因而YARN-Cluster模式不適合運行交互類型的作業(yè)
YARN-Client模式下,Application Master僅僅向YARN請求Executor,Client會和請求的Container通信來調(diào)度他們工作,也就是說Client不能離開
(1)YarnCluster的Driver是在集群的某一臺NM上,但是Yarn-Client就是在RM的機器上;
(2)而Driver會和Executors進(jìn)行通信,所以Yarn_cluster在提交App之后可以關(guān)閉Client,而Yarn-Client不可以;
(3)Yarn-Cluster適合生產(chǎn)環(huán)境,Yarn-Client適合交互和調(diào)試。
3、spark運行原理
spark應(yīng)用程序進(jìn)行各種transformation的計算,最后通過action觸發(fā)job。提交之后,構(gòu)建SparkContext,通過sparkContext根據(jù)RDD的依賴關(guān)系構(gòu)建DAG圖,DAG圖提交給DAGScheduler進(jìn)行解析,解析時是以shuffle為邊界,反向解析,構(gòu)建stage,stage之間也有依賴關(guān)系,這個過程就是對DAG圖進(jìn)行解析劃分stage,并且計算出各個stage之間的依賴關(guān)系。stage以stageSet方式提交給TaskScheduler,然后將一個個TaskSet提交給底層調(diào)度器,在spark中是提交給taskScheduler處理,生成TaskSet manager,最后提交給executor進(jìn)行計算,executor多線程計算,完成task任務(wù)后,將完成信息提交給schedulerBackend,由它將任務(wù)完成的信息提交給TaskScheduler。TaskScheduler反饋信息給TaskSetManager,刪除該task任務(wù),執(zhí)行下一個任務(wù)。同時TaskScheduler將完成的結(jié)果插入到成功隊列里,加入之后返回加入成功的信息。TaskScheduler將任務(wù)處理成功的信息傳給TaskSet Manager。全部任務(wù)完成后TaskSet Manager將結(jié)果反饋給DAGScheduler。如果屬于resultTask,交給JobListener。如果不屬于resultTask,保存結(jié)果。全部運行完之后寫入數(shù)據(jù)。
很多人都知道我有大數(shù)據(jù)培訓(xùn)資料,都天真的以為我有全套的大數(shù)據(jù)開發(fā)、hadoop、spark等視頻學(xué)習(xí)資料。我想說你們是對的,我的確有大數(shù)據(jù)開發(fā)、hadoop、spark的全套視頻資料。
如果你對大數(shù)據(jù)開發(fā)感興趣可以加口群領(lǐng)取免費學(xué)習(xí)資料: 763835121
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。