Apache Flink 記憶體管理

2022-09-13 13:09:10 字數 724 閱讀 4408

jvm:

flink的記憶體管理:

序列化與反序列化可以理解為編碼與解碼的過程。序列化以後的資料希望占用比較小的空間,而且資料能夠被正確地反序列化出來。為了能正確反序列化,序列化時僅儲存二進位制資料本身肯定不夠,需要增加一些輔助的描述資訊。此處可以採用不同的策略,因而產生了很多不同的序列化方法。j**a本身自帶的序列化和反序列化的功能,但是輔助資訊占用空間比較大,在序列化物件時記錄了過多的類資訊。

flink實現了自己的序列化框架,flink處理的資料流通常是一種型別,所以可以只儲存乙份物件schema資訊,節省儲存空間。又因為物件型別固定,所以可以通過偏移量訪問。

j**a支援任意j**a或scala型別,型別資訊由typeinformation類表示,typeinformation 支援以下幾種型別:

針對前六種型別資料集,flink皆可以自動生成對應的typeserializer,能非常高效地對資料集進行序列化和反序列化。對於最後一種資料型別,flink會使用kryo進行序列化和反序列化。每個typeinformation中,都包含了serializer,型別會自動通過serializer進行序列化,然後用j**a unsafe介面寫入memorysegments。如下圖展示 乙個內嵌型的tuple3物件的序列化過程:

操縱二進位制資料:

flink使用堆外記憶體:

Apache Flink 環境搭建

筆者直接在docker上搭建的flink環境 先到瀏覽了flink官網的文件,最新的穩定版本是1.10.0 然後到dockerhub搜尋flink 上面直接有flink容器的docker compose的的配置。直接copy下來。這裡我選擇的版本flink 1.10.0 scala 2.11 ver...

Apache Flink 漫談系列 01 序

apache flink 漫談系列 分享的內容和觀點與任何公司,組織無關,僅代表我個人的認知,純屬技術愛好的分享 本人 孫金城,花名 金竹 阿里巴巴高階技術專家,apache flink committer。目前就職於阿里巴巴計算平台事業部,自2015年以來一直投入於基於apache flink的設...

記憶體管理 記憶體管理概述

儲存器的發展方向是高速 大容量和小體積,即儲存器嘗試更高讀寫速度,更大儲存容量,更小物理體積。在計算機中,常見的儲存器有 暫存器,快取,記憶體,硬碟,一般硬碟之類的輔助儲存器又稱外存。在平均讀寫速度上,有 暫存器 快取 記憶體 外存 在單位容量 上,有 外存 記憶體 快取 暫存器 cpu處理器只能直...