Flink优化

标准的Flink任务提交脚本(Generic CLI 模式)

从1.11开始,增加了通用客户端模式,参数使用-D 指定

bin/flink run \

-t yarn-per-job \

-d \

-p 3 \ 指定并行度

-Dyarn.application.queue=default \ 指定yarn队列

-Djobmanager.memory.process.size=1024mb \ 指定JM的总进程大小

-Dtaskmanager.memory.process.size=1024mb \ 指定每个TM的总进程大小

-Dtaskmanager.numberOfTaskSlots=2 \ 指定每个TM的slot数

-c com.atguigu.flink.tuning.UvDemo \

/opt/module/flink-1.13.6/myjars/flink-tuning-1.0-SNAPSHOT.jar

1.TaskManager内存模型

Flink优化_第1张图片

 

1.1、内存模型详解

JVM 特定内存:JVM本身使用的内存,包含JVM的metaspace和over-head

1)JVM metaspace:JVM元空间

taskmanager.memory.jvm-metaspace.size,默认256mb

2)JVM over-head执行开销:JVM执行时自身所需要的内容,包括线程堆栈、IO、编译缓存等所使用的内存。

taskmanager.memory.jvm-overhead.fraction,默认0.1

taskmanager.memory.jvm-overhead.min,默认192mb

taskmanager.memory.jvm-overhead.max,默认1gb

总进程内存*fraction,如果小于配置的min(或大于配置的max大小,则使用min/max大小

框架内存:Flink框架,即TaskManager本身所占用的内存,不计入Slot的资源中。

堆内:taskmanager.memory.framework.heap.size,默认128MB

堆外:taskmanager.memory.framework.off-heap.size,默认128MB/

Task内存:Task执行用户代码时所使用的内存

堆内:taskmanager.memory.task.heap.size,默认none,由Flink内存扣除掉其他部分的内存得到。

堆外:taskmanager.memory.task.off-heap.size,默认0,表示不使用堆外内存

网络内存:网络数据交换所使用的堆外内存大小,如网络数据交换缓冲区

堆外:taskmanager.memory.network.fraction,默认0.1

  taskmanager.memory.network.min,默认64mb

  taskmanager.memory.network.max,默认1gb

Flink内存*fraction,如果小于配置的min(或大于配置的max大小,则使用min/max大小

托管内存:用于RocksDB State Backend 的本地内存和批的排序、哈希表、缓存中间结果。

堆外:taskmanager.memory.managed.fraction,默认0.4

  taskmanager.memory.managed.size,默认none

如果size没指定,则等于Flink内存*fraction

2.合理利用cpu资源

        arn的容量调度器默认情况下是使用“DefaultResourceCalculator”分配策略,只根据内存调度资源,所以在Yarn的资源管理页面上看到每个容器的vcore个数还是1。

可以修改策略为 DominantResourceCalculator,该资源计算器在计算资源的时候会综合考虑cpu和内存的情况。在capacity-scheduler.xml 中修改属性:

 yarn.scheduler.capacity.resource-calculator

 

 org.apache.hadoop.yarn.util.resource.DominantResourceCalculator

使用DefaultResourceCalculator 策略

bin/flink run \

-t yarn-per-job \

-d \

-p 3 \

-Dyarn.application.queue=default \

-Djobmanager.memory.process.size=1024mb \

-Dtaskmanager.memory.process.size=4096mb \

-Dtaskmanager.numberOfTaskSlots=2 \

-c com.atguigu.flink.tuning.UvDemo \

/opt/module/flink-1.13.6/myjars/flin

你可能感兴趣的:(flink,大数据)