https://www.yuque.com/manyanshanhe/ugame7/lnpybe
上节当中的生产资源配置示例 中,出现了一个
-Dtaskmanager.numberOfTaskSlots=2 \ 与容器核数 1core:1slot 或 2core:1slot
说明一个 taskManager 给两个槽 slot ,一个并行度只能用一个槽 slot
可以看到一个容器只有一个 vcore:就是一个容器有一个CPU核心,当前有4个容器,就有4个CPU核心
假如并行度是5的话,那就需要5个槽,一个cpu核心只有 1个或者两个槽,那么就得需要3个容器才能跑
Yarn 的容量调度器默认情况下是使用“DefaultResourceCalculator”分配策略,只根 据内存调度资源,所以在 Yarn 的资源管理页面上看到每个容器的 vcore 个数还是 1。 可以修改策略为 DominantResourceCalculator,该资源计算器在计算资源的时候会 综合考虑 cpu 和内存的情况。在 capacity-scheduler.xml 中修改属性:
<property>
<name>yarn.scheduler.capacity.resource-calculator</name>
<!-- <value>org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator</value> -->
<value>org.apache.hadoop.yarn.util.resource.DominantResourceCalculator</value>
</property>
使用 DefaultResourceCalculator 策略
bin/flink run \ -t yarn-per-job \ -d \ -p 5 \ -Drest.flamegraph.enabled=true \ -Dyarn.application.queue=test \ -Djobmanager.memory.process.size=1024mb \ -Dtaskmanager.memory.process.size=4096mb \ -Dtaskmanager.numberOfTaskSlots=2 \ -c com.atguigu.flink.tuning.UvDemo \ /opt/module/flink-1.13.1/myjar/flink-tuning-1.0-SNAPSHOT.jar
可以看到一个容器只有一个 vcore:
使用 DominantResourceCalculator 策略
修改后 yarn 配置后,分发配置并重启 yarn,再次提交 flink 作业:
bin/flink run \ -t yarn-per-job \ -d \ -p 5 \ -Drest.flamegraph.enabled=true \ -Dyarn.application.queue=test \ -Djobmanager.memory.process.size=1024mb \ -Dtaskmanager.memory.process.size=4096mb \ -Dtaskmanager.numberOfTaskSlots=2 \ -c com.atguigu.flink.tuning.UvDemo \ /opt/module/flink-1.13.1/myjar/flink-tuning-1.0-SNAPSHOT.jar
看到容器的 vcore 数变了:
JobManager 1 个,占用 1 个容器,vcore=1
TaskManager 3 个,占用 3 个容器,每个容器 vcore=2,总 vcore=2*3=6,因为默认单个容器的 vcore 数=单 TM 的 slot 数
使 用 DominantResourceCalculator 策 略 并 指 定 容 器 vcore 数
指定 yarn 容器的 vcore 数,提交:
bin/flink run \ -t yarn-per-job \ -d \ -p 5 \ -Drest.flamegraph.enabled=true \ -Dyarn.application.queue=test \ -Dyarn.containers.vcores=3 \ -Djobmanager.memory.process.size=1024mb \ -Dtaskmanager.memory.process.size=4096mb \ -Dtaskmanager.numberOfTaskSlots=2 \ -c com.atguigu.flink.tuning.UvDemo \ /opt/module/flink-1.13.1/myjar/flink-tuning-1.0-SNAPSHOT.jar
JobManager1 个,占用 1 个容器,vcore=1
TaskManager3 个,占用 3 个容器,每个容器 vcore =3,总 vcore=3*3=9
注意啊:设置的时候,不要超过yarn配置文件里的最大的核心数,不要超过那个值