运行flink 在on yarn环境
当我使用-p 8 -ys 2启动flink时,我假设yarn将为唯一的任务管理器容器分配2个vcore,但是当我从yarn resource manager web ui检查每个容器的vcore数时,我总是看到vcore数是1。我还从yarn资源管理器日志中看到vcore是1。
运行的脚本
flink run -c $application_class -m yarn-cluster -p 8 -yjm 1024m -ytm 3048m -ynm $application_name -ys 2 -yqu q4rt $jar
在yarn界面上看到:
从截图上看,VCore Userd的使用量只有5个。 为什么?
Property | Description |
yarn.scheduler.capacity.resource-calculator | The ResourceCalculator implementation to be used to compare Resources in the scheduler. The default i.e. org.apache.hadoop.yarn.util.resource.DefaultResourseCalculator only uses Memory while DominantResourceCalculator uses Dominant-resource to compare multi-dimensional resources such as Memory, CPU etc. A Java ResourceCalculator class name is expected. |
yarn默认情况下是使用“DefaultResourceCalculator”分配策略,只根据内存调度资源,所以flink on yarn运行的时候,在yarn的资源管理页面上看到每个容器的vcore个数还是1. 相关配置在capacity-scheduler.xml 文件:
<property>
<name>yarn.scheduler.capacity.resource-calculator</name>
<value>org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator</value>
</property>
我们应该考虑使用DominantResourceCalculator,该资源计算器在计算资源的时候会综合考虑cpu和内存的情况,来决定yarn最后的调度。
<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>
CDH环境中在( 容量调度程序配置高级配置代码段(安全阀))配置: