欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

深度解析 Flink 是如何管理好內(nèi)存的?

2021-02-23    分類: 網(wǎng)站建設(shè)

前言

如今,許多用于分析大型數(shù)據(jù)集的開源系統(tǒng)都是用 Java 或者是基于 JVM 的編程語言實(shí)現(xiàn)的。最著名的例子是 Apache Hadoop,還有較新的框架,如 Apache Spark、Apache Drill、Apache Flink?;?JVM 的數(shù)據(jù)分析引擎面臨的一個常見挑戰(zhàn)就是如何在內(nèi)存中存儲大量的數(shù)據(jù)(包括緩存和高效處理)。合理的管理好 JVM 內(nèi)存可以將 難以配置且不可預(yù)測的系統(tǒng) 與 少量配置且穩(wěn)定運(yùn)行的系統(tǒng)區(qū)分開來。

在這篇文章中,我們將討論 Apache Flink 如何管理內(nèi)存,討論其自定義序列化與反序列化機(jī)制,以及它是如何操作二進(jìn)制數(shù)據(jù)的。

數(shù)據(jù)對象直接放在堆內(nèi)存中

在 JVM 中處理大量數(shù)據(jù)最直接的方式就是將這些數(shù)據(jù)做為對象存儲在堆內(nèi)存中,然后直接在內(nèi)存中操作這些數(shù)據(jù),如果想進(jìn)行排序則就是對對象列表進(jìn)行排序。然而這種方法有一些明顯的缺點(diǎn),首先,在頻繁的創(chuàng)建和銷毀大量對象的時候,監(jiān)視和控制堆內(nèi)存的使用并不是一件很簡單的事情。如果對象分配過多的話,那么會導(dǎo)致內(nèi)存過度使用,從而觸發(fā) OutOfMemoryError,導(dǎo)致 JVM 進(jìn)程直接被殺死。另一個方面就是因?yàn)檫@些對象大都是生存在新生代,當(dāng) JVM 進(jìn)行垃圾回收時,垃圾收集的開銷很容易達(dá)到 50% 甚至更多。最后就是 Java 對象具有一定的

測試是在 8 核機(jī)器上運(yùn)行單線程,因此一個核心的完全利用僅對應(yīng) 12.5% 的總體利用率。截圖顯示,對二進(jìn)制數(shù)據(jù)進(jìn)行操作可顯著減少垃圾回收活動。對于對象存在堆中,垃圾收集器在排序緩沖區(qū)被填滿時以非常短的時間間隔運(yùn)行,并且即使對于單個處理線程也會導(dǎo)致大量 CPU 使用(排序本身不會觸發(fā)垃圾收集器)。JVM 垃圾收集多個并行線程,解釋了高CPU 總體利用率。另一方面,對序列化數(shù)據(jù)進(jìn)行操作的方法很少觸發(fā)垃圾收集器并且 CPU 利用率低得多。實(shí)際上,如果使用 Flink 序列化的方式在 Integer 字段上對 Tuple 進(jìn)行排序,則垃圾收集器根本不運(yùn)行,因?yàn)閷τ诔蓪Ρ容^,不需要反序列化任何對象。Kryo 序列化需要比較多的垃圾收集,因?yàn)樗皇褂枚M(jìn)制排序 key 并且每次排序都要反序列化兩個對象。

內(nèi)存使用情況上圖顯示 Flink 序列化和 Kryo 序列化不斷的占用大量內(nèi)存

存使用情況圖表顯示flink-serialized和kryo-serialized不斷占用大量內(nèi)存。這是由于 MemorySegments 的預(yù)分配。實(shí)際內(nèi)存使用率要低得多,因?yàn)榕判蚓彌_區(qū)并未完全填充。下表顯示了每種方法的內(nèi)存消耗。1000 萬條數(shù)據(jù)產(chǎn)生大約 280 MB 的二進(jìn)制數(shù)據(jù)(對象數(shù)據(jù)、指針和排序 key),具體取決于使用的序列化程序以及二進(jìn)制排序 key 的存在和大小。將其與數(shù)據(jù)存儲在堆上的方法進(jìn)行比較,我們發(fā)現(xiàn)對二進(jìn)制數(shù)據(jù)進(jìn)行操作可以顯著提高內(nèi)存效率。在我們的基準(zhǔn)測試中,如果序列化為排序緩沖區(qū)而不是將其作為堆上的對象保存,則可以在內(nèi)存中對兩倍以上的數(shù)據(jù)進(jìn)行排序。

總而言之,測試驗(yàn)證了文章前面說的對二進(jìn)制數(shù)據(jù)進(jìn)行操作的好處。

展望未來

Apache Flink 具有相當(dāng)多的高級技術(shù),可以通過有限的內(nèi)存資源安全有效地處理大量數(shù)據(jù)。但是有幾點(diǎn)可以使 Flink 更有效率。Flink 社區(qū)正在努力將管理內(nèi)存移動到堆外內(nèi)存。這將允許更小的 JVM,更低的垃圾收集開銷,以及更容易的系統(tǒng)配置。使用 Flink 的 Table API,所有操作(如 aggregation 和 projection)的語義都是已知的(與黑盒用戶定義的函數(shù)相反)。因此,我們可以為直接對二進(jìn)制數(shù)據(jù)進(jìn)行操作的 Table API 操作生成代碼。進(jìn)一步的改進(jìn)包括序列化設(shè)計(jì),這些設(shè)計(jì)針對應(yīng)用于二進(jìn)制數(shù)據(jù)的操作和針對序列化器和比較器的代碼生成而定制。

總結(jié)

  • Flink 的主動內(nèi)存管理減少了因觸發(fā) OutOfMemoryErrors 而殺死 JVM 進(jìn)程和垃圾收集開銷的問題。
  • Flink 具有高效的數(shù)據(jù)序列化和反序列化機(jī)制,有助于對二進(jìn)制數(shù)據(jù)進(jìn)行操作,并使更多數(shù)據(jù)適合內(nèi)存。
  • Flink 的 DBMS 風(fēng)格的運(yùn)算符本身在二進(jìn)制數(shù)據(jù)上運(yùn)行,在必要時可以在內(nèi)存中高性能地傳輸?shù)酱疟P。

標(biāo)題名稱:深度解析 Flink 是如何管理好內(nèi)存的?
轉(zhuǎn)載來于:http://chinadenli.net/news29/102479.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序云服務(wù)器、網(wǎng)頁設(shè)計(jì)公司網(wǎng)站設(shè)計(jì)、ChatGPT、定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)
中文人妻精品一区二区三区四区| 美女被后入视频在线观看| 香蕉网尹人综合在线观看| 精品久久久一区二区三| 中文字幕亚洲视频一区二区| 又大又长又粗又猛国产精品| 黄片在线免费看日韩欧美| 香蕉尹人视频在线精品| 亚洲伦理中文字幕在线观看| 国产精品午夜福利免费在线| 好吊视频一区二区在线| 欧美自拍系列精品在线| 深夜视频在线观看免费你懂| 午夜福利在线观看免费| 日韩中文字幕人妻精品| 久久免费精品拍拍一区二区| 日韩人妻有码一区二区| 老熟妇乱视频一区二区| 国产中文字幕一二三区| 国产成人亚洲欧美二区综| 欧美日本道一区二区三区| 大香蕉久草网一区二区三区| 亚洲精品成人综合色在线| 亚洲精品一区二区三区免| 国产精品亚洲二区三区| 高潮少妇高潮久久精品99| 九九视频通过这里有精品| 日韩一级欧美一级久久| 热情的邻居在线中文字幕| 午夜亚洲少妇福利诱惑| 国产又色又爽又黄又免费| 国产午夜免费在线视频| 欧美精品久久99九九| 日本成人三级在线播放| 国产综合香蕉五月婷在线| 亚洲中文在线男人的天堂| 91老熟妇嗷嗷叫太91| 丰满少妇被猛烈撞击在线视频| 欧美激情床戏一区二区三| 精品一区二区三区乱码中文| 中文字幕精品人妻一区|