欧美成人午夜免费全部完,亚洲午夜福利精品久久,а√最新版在线天堂,另类亚洲综合区图片小说区,亚洲欧美日韩精品色xxx

千鋒扣丁學(xué)堂大數(shù)據(jù)培訓(xùn)計算框架Spark之內(nèi)存模型

2019-06-27 14:40:13 3318瀏覽

今天千鋒扣丁學(xué)堂大數(shù)據(jù)培訓(xùn)老師給大家分享一篇關(guān)于大數(shù)據(jù)計算框架Spark之內(nèi)存模型的詳細介紹,首先Executor端的內(nèi)存模型,包括堆內(nèi)內(nèi)存(On-heapMemory)和堆外內(nèi)存(Off-heapMemory),下面我們一起來看一下吧。


存管理接口(MemoryManager)

Spark為Execution內(nèi)存和Storage內(nèi)存的管理提供了統(tǒng)一的接:MemoryManager。

MemoryManager的具體實現(xiàn)上,Spark1.6之后默認(rèn)為統(tǒng)一管理(UnifiedMemoryManager)方式,1.6之前采用的靜態(tài)管理(StaticMemoryManager)方式仍被保留,可通過配置spark.memory.useLegacyMode參數(shù)啟用。

1靜態(tài)內(nèi)存管理(StaticMemoryManager)

堆內(nèi)空間管理

存儲內(nèi)存、執(zhí)行內(nèi)存和其他內(nèi)存的大小在Spark應(yīng)用程序運行期間均為固定的,但可以在應(yīng)用程序啟動前進行配置。

可用的Execution內(nèi)存和可用的Storage內(nèi)存計算公式:

可用的Execution內(nèi)存=systemMaxMemory*spark.shuffle.memoryFraction*spark.shuffle.safetyFraction

可用的Storage內(nèi)存=systemMaxMemory*spark.storage.memoryFraction*spark.storage.safetyFraction

systemMaxMemory取決于當(dāng)前JVM堆內(nèi)內(nèi)存的大小,公式中的兩個safetyFraction參數(shù),其意義在于在邏輯上預(yù)留出一塊保險區(qū)域,降低因?qū)嶋H內(nèi)存超出當(dāng)前預(yù)設(shè)范圍而導(dǎo)致OOM的風(fēng)險。這塊邏輯上預(yù)留的區(qū)域同樣由JVM管理。


圖靜態(tài)內(nèi)存管理-堆內(nèi)內(nèi)存的分配

堆外空間管理

堆外只有Execution內(nèi)存和Storage內(nèi)存,他們的大小由spark.memory.storageFraction這個參數(shù)決定。由于堆外內(nèi)存占用的空間可以被精確計算,所以無需再設(shè)定保險區(qū)域


靜態(tài)內(nèi)存管理-堆外內(nèi)存的分配

2統(tǒng)一內(nèi)存管理

Spark1.6之后引入的統(tǒng)一內(nèi)存管理機制,與靜態(tài)內(nèi)存管理的區(qū)別在于Storage內(nèi)存和Execution內(nèi)存共享同一塊空間,可以動態(tài)占用對方的空閑區(qū)域。

堆內(nèi)內(nèi)存(On-heapMemory)

堆內(nèi)內(nèi)存區(qū)域大致可以分為以下四類:

1)Execution內(nèi)存:主要用于存放Shuffle、Join、Sort、Aggregation等計算過程中的臨時數(shù)據(jù)

2)Storage內(nèi)存:主要用于緩存和傳播內(nèi)部數(shù)據(jù)

3)Other:用戶數(shù)據(jù)結(jié)構(gòu)、Spark內(nèi)部元數(shù)據(jù)。

4)預(yù)留內(nèi)存(ReservedMemory):系統(tǒng)預(yù)留內(nèi)存。默認(rèn)是300MB。


堆內(nèi)存(Off-heapMemory)

Spark1.6開始引入了Off-heapmemory(詳見SPARK-11389)。這種模式不在JVM內(nèi)申請內(nèi)存,而是調(diào)用JavaunsafeAPI(如C語言里面的malloc())直接向操作系統(tǒng)申請內(nèi)存,JVM不管理這部分內(nèi)存,所以可以避免頻繁的GC,但要自己編寫內(nèi)存申請和釋放的邏輯。

堆外內(nèi)存分為兩類:Execution內(nèi)存和Storage內(nèi)存。

默認(rèn)情況下堆外內(nèi)存不啟用,可以通過配置spark.memory.offHeap.enabled參數(shù)啟用,通過配置spark.memory.offHeap.size參數(shù)設(shè)定堆外內(nèi)存空間的大小。

如果堆外內(nèi)存被啟用,那么Executor內(nèi)將同時存在堆內(nèi)和堆外內(nèi)存,Executor中的Execution內(nèi)存是堆內(nèi)的Execution內(nèi)存和堆外的Execution內(nèi)存之和,同理,Storage內(nèi)存也一樣。


說明

maxOffHeapMemory=spark.memory.offHeap.size

Execution內(nèi)存和Storage內(nèi)存動態(tài)調(diào)整

1)設(shè)定基本的Storage內(nèi)存和Execution內(nèi)存區(qū)域(通過spark.storage.storageFraction配置比例,默認(rèn)是0.5,即各占一半)

2)Storage內(nèi)存和Execution內(nèi)存都不足時,則存儲到硬盤;若己方空間不足而對方空余時,可借用對方的空間;(存儲空間不足是指不足以放下一個完整的Block)

3)Execution內(nèi)存空間被對方占用后,可讓對方將占用的部分轉(zhuǎn)存到硬盤,然后"歸還"借用的空間

4)Storage內(nèi)存空間被對方占用后,無法讓對方"歸還",因為實現(xiàn)起來較為復(fù)雜。

以上就是關(guān)于千鋒扣丁學(xué)堂大數(shù)據(jù)培訓(xùn)計算框架Spark之內(nèi)存模型的全部內(nèi)容,想要了解更多關(guān)于大數(shù)據(jù)開發(fā)方面內(nèi)容的小伙伴,請關(guān)注扣丁學(xué)堂大數(shù)據(jù)培訓(xùn)官網(wǎng)、微信等平臺,扣丁學(xué)堂IT職業(yè)在線學(xué)習(xí)教育有專業(yè)的大數(shù)據(jù)講師為您指導(dǎo),此外扣丁學(xué)堂老師精心推出的大數(shù)據(jù)視頻教程定能讓你快速掌握大數(shù)據(jù)從入門到精通開發(fā)實戰(zhàn)技能??鄱W(xué)堂大數(shù)據(jù)學(xué)習(xí)群:209080834。


扣丁學(xué)堂微信公眾號                          Python全棧開發(fā)爬蟲人工智能機器學(xué)習(xí)數(shù)據(jù)分析免費公開課直播間


      【關(guān)注微信公眾號獲取更多學(xué)習(xí)資料】         【掃碼進入Python全棧開發(fā)免費公開課】



查看更多關(guān)于“大數(shù)據(jù)培訓(xùn)資訊”的相關(guān)文章>

標(biāo)簽: 大數(shù)據(jù)培訓(xùn) 大數(shù)據(jù)視頻教程 大數(shù)據(jù)分析培訓(xùn) 大數(shù)據(jù)學(xué)習(xí)視頻 Hadoop生態(tài)圈 數(shù)據(jù)結(jié)構(gòu) 算法

熱門專區(qū)

暫無熱門資訊

課程推薦

微信
微博
15311698296

全國免費咨詢熱線

郵箱:codingke@1000phone.com

官方群:148715490

北京千鋒互聯(lián)科技有限公司版權(quán)所有   北京市海淀區(qū)寶盛北里西區(qū)28號中關(guān)村智誠科創(chuàng)大廈4層
京ICP備2021002079號-2   Copyright ? 2017 - 2022
返回頂部 返回頂部