柚子快報激活碼778899分享:大數(shù)據(jù) 分布式 Spark內(nèi)核
柚子快報激活碼778899分享:大數(shù)據(jù) 分布式 Spark內(nèi)核
環(huán)境準(zhǔn)備及提交流程
底層通信協(xié)議
Akka通信協(xié)議,收發(fā)郵箱是一體的Netty通信協(xié)議,收發(fā)郵箱是分開的
任務(wù)調(diào)度
任務(wù)的最小單位是線程。失敗重試,會記錄失敗的次數(shù),如果超過最大重試次數(shù),宣告Application失敗。失敗的同時會記錄它上一次所在的ExecutorID和Host, 最多重試4次。
Shuffle
功能:打散重分區(qū)
特點(diǎn):無論MR和Spark,Shuffle都需要落盤。其中的區(qū)別是MR每次都落盤,Spark是盡可能少落盤。
落盤的話就需要考慮不同分區(qū)之間的數(shù)據(jù)如何存放的問題。假設(shè)每個Executor有兩個Task,總共有三個分區(qū)。以下是四種shuffle落盤的策略:
每個Task里面的數(shù)據(jù)打散成3個文件,一個Executor生成6個文件Executor里面的兩個Task的數(shù)據(jù)打散到3個文件中,一個分區(qū)一個文件,共3個文件。sortShuffle: Executor里面打散的數(shù)據(jù)落盤到一個文件中,三個分區(qū)的數(shù)據(jù)通過索引來區(qū)分。這個就是SortShuffle,目前MR就是sortShuffle。bypassShuffle:對不同分區(qū)的數(shù)據(jù)進(jìn)行打散重分區(qū)時不對數(shù)據(jù)進(jìn)行排序,只適合非聚合類的shuffle算子,比如reduceByKey。
Spark內(nèi)存管理
堆內(nèi)和堆外內(nèi)存
堆內(nèi):通過JVM申請的內(nèi)存,通過了JVM的轉(zhuǎn)化,更加安全,并且有垃圾回收機(jī)制。堆外:也稱頁緩存,自己向操作系統(tǒng)申請。沒有經(jīng)過JVM轉(zhuǎn)換,不安全,沒有垃圾回收機(jī)制。堆外的內(nèi)存空間是通過C語言控制的,有出現(xiàn)內(nèi)存泄漏的危險。
優(yōu)點(diǎn):
減少了垃圾回收的工作加快了復(fù)制的速度,省略了序列化的操作。 缺點(diǎn):
堆外內(nèi)存難以控制,如果內(nèi)存泄漏,很難排查不適合存儲復(fù)雜對象。 spark中,堆外內(nèi)存默認(rèn)是關(guān)閉的。配置方法
executor-memory 和 driver-memory啟用堆外內(nèi)存spark.memory.offHeap.eabled,并由spark.memory.offHeap.size設(shè)置堆外空間大小。
內(nèi)存的分配
靜態(tài)內(nèi)存管理,簡稱寫死
分為三個部分:
存儲空間60%執(zhí)行空間20%其他空間20% 統(tǒng)一內(nèi)存管理,簡稱動態(tài)分配
分為三個部分
其他空間40%存儲空間+計算空間=60% 存儲和計算空間反向使用,允許空間借用。
RDD的持久化機(jī)制
存儲內(nèi)存淘汰規(guī)則:
舊RDD所屬RDD不能處于被讀狀態(tài),避免引發(fā)一致性問題新舊Block不能屬于同一個RDD,避免循環(huán)淘汰按照最近最少LRU進(jìn)行淘汰
柚子快報激活碼778899分享:大數(shù)據(jù) 分布式 Spark內(nèi)核
精彩文章
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。