十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
這篇文章給大家介紹怎么在Apache Flink中管理RocksDB內(nèi)存大小,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
我們提供的服務有:成都網(wǎng)站建設、成都網(wǎng)站制作、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、順城ssl等。為1000多家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術(shù)的順城網(wǎng)站制作公司
在深入了解配置參數(shù)之前,讓我們首先重新討論在flink中如何使用RocksDB來進行狀態(tài)管理。當您選擇RocksDB作為狀態(tài)后端時,您的狀態(tài)將被序列化成字節(jié)存在堆外內(nèi)存或本地磁盤中。RocksDB是一個鍵值存儲,它被組織為一個日志結(jié)構(gòu)的合并樹(LMS樹)。當用于在Flink中存儲Keyed狀態(tài)時,Key由
使用RocksDB作為狀態(tài)后端有許多優(yōu)點:它不受垃圾回收的影響,與堆中的對象相比,它通常會有較低的內(nèi)存開銷,并且它是目前唯一支持增量檢查點的選項。此外,使用RocksDB,您的狀態(tài)大小僅受限于可用本地磁盤空間大小,最適合依賴大型狀態(tài)操作的Flink應用程序。
如果你不熟悉RocksDB,下圖說明了其基本的READ和WRITE操作。
RocksDB中的寫操作將數(shù)據(jù)存儲在當前活動的內(nèi)存表(Active MemTable)中。當內(nèi)存表已滿時,它將變?yōu)镽EAD ONLY MemTable,并被一個新的、空閑的active狀態(tài)的MemTable替換。READ ONLY MemTable會被后臺線程周期性地flush到磁盤,成為按照key排序的的只讀文件 -- 即所謂的SSTables。反過來,SSTables是不可變的,通過后臺日志壓縮將他們整合到一起(SSTables的多路歸并)。如前所述,使用RocksDB,每個注冊狀態(tài)都是一個column family,這意味著每個狀態(tài)都包含自己的MemTables和SSTables。
在RocksDB中的READ操作首先訪問Active Memory Table以響應查詢。如果找不到要搜索的key,則READ操作會根據(jù)key從最新到最舊READ ONLY MemTables依次查找,直到找到要搜索的key。如果在任何MemTable中都找不到該key,則READ操作將再次從最新的位置開始訪問SSTable。SSTable文件可以從BlockCache、(如果它包含未壓縮的表文件)從操作系統(tǒng)的文件高速緩存獲得,或者在最壞的情況下從本地磁盤獲得。像SST級別的bloom filters的可選索引可以幫助避免命中磁盤。
現(xiàn)在我們已經(jīng)使用Apache Flink建立了基于RocksDB的一些功能,讓我們來看看可以幫助您更有效地管理RocksDB內(nèi)存大小的配置選項。請注意,以下選項并非是全面的,您可以使用Apache Flink 1.6中引入的State TTL(Time-To-Live)功能管理Flink應用程序的狀態(tài)大小。以下三個配置是幫助您有效管理RocksDB資源消耗的良好起點:
此配置將最終控制在內(nèi)存中緩存的未壓縮的最大的塊數(shù)。隨著塊數(shù)的增加,內(nèi)存大小也會增加 - 因此,通過預先配置它,您可以保持特定的內(nèi)存消耗級別。
此配置建立并控制RocksDB中MemTable的最大大小。Active MemTables和READ ONLY MemTables最終將影響RocksDB中的內(nèi)存大小,因此盡早調(diào)整它可能會為您節(jié)省一些麻煩。
在RocksDB將state作為SS Tables刷新到本地磁盤之前,此配置決定并控制內(nèi)存中保留的最大MemTable的數(shù)量。這實際上也決定了在內(nèi)存中 READ ONLY 狀態(tài)的MemTables的最大數(shù)量。
除了上面提到的配置之外,您還可以選擇性的配置消耗額外內(nèi)存空間的索引和 bloom filters ,以及側(cè)邊的table cache。表緩存不僅會占用RocksDB中的額外內(nèi)存,它還會保存打開文件描述符到默認情況下不受限的SST文件,如果配置不正確,可能會和操作系統(tǒng)的配置發(fā)生沖突。
我們剛剛引導您完成了一些用RocksDB作為Flink中的狀態(tài)后端的的配置選項,這將幫助我們有效的管理內(nèi)存大小。
關(guān)于怎么在Apache Flink中管理RocksDB內(nèi)存大小就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。