Flink的內存管理是如何做的?

Flink並不是將大量對象存在堆上,而是將對象都序列化到一個預分配的內存塊上。此外,Flink大量的使用了堆外內存。如果需要處理的數據超出了內存限制,則會將部分數據 存儲到硬盤上。Flink 爲了直接操作二進制數據實現了自己的序列化框架。理論上 Flink 的。

內存管理分爲三部分:

  • Network Buffers:這個是在 TaskManager 啓動的時候分配的,這是一組用於緩存網絡數據的內存,每個塊是32K,默認分配 2048個,可以通過“taskmanager.network.numberOfBuffers” 修改。
  • Memory Manage pool:大量的 Memory Segment 塊,用於運行時的算法(Sort/Join/Shuffle 等),這部分啓動的時候就會分配。
  • User Code:這部分是除了 Memory Manager 之外的內存用於 User code TaskManager 本身的數據結構。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章