大数据面试之Flink

大数据面试之Flink

目录

1、Flink如何隔离多个作业任务

2、Flink如何管理内存

1、Flink如何隔离多个作业任务

Flink使用Slot来隔离多个作业任务。TaskManager将计算资源划分为多个Slot,每个Slot独享给其分配的计算资源(如内存),这种静态的资源管理方式有利于任务间的资源隔离。

TaskManager可以配置成单Slot模式,这样这个worker上运行的任务就独占了整个JVM进程;同一个JVM进程上的多个任务可以共享TCP连接、心跳和数据。

Flink不允许属于同一个作业的任务共享同一个slot,但允许属于同一个作业的不同任务共享同一个Slot。因此同一个作业的所有任务可共享一个slot。

2、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 本身的数据结构。

 

posted @ 2020-10-16 00:41  这个小仙女真可爱  阅读(471)  评论(0编辑  收藏  举报