使用yarn-session在yarn集群上启动一个flink集群:
./yarn-session.sh -n 4 -jm 1024 -tm 1024 -s 2
此时,在master:8088的界面看到多了一个application,但是running containers数量为1;【为何不是分配的4】
然后,继续在yarn上提交flink的jar包运行:
./flink run -p 4 /home/hadoop/proj/wordcount.jar
点开8088界面的Tracking UI中的ApplicationMaster,可以看到Flink的web界面,运行一个wordcount时的taskmanager数量为1;【为何不是分配的4】
答:
(1)https://blog.csdn.net/xianpanjia4616/article/details/83958673
(2)https://ci.apache.org/projects/flink/flink-docs-release-1.6/ops/config.html#jobmanager
官网的图好像不是上面(1)中描述的那个意思,实验了一下,发现不在yarn上运行flink直接start-cluster.sh时,是先分配完slot再开另一个taskmanager。
测试:
启动yarn-session后,同时运行多个flink run进行wordcount,发现flink的web界面出现陆续出现多个taskmanager,但是可以超过我们yarn-session语句中设定的4,查看wordcount的operatorchain的host,发现分布在不同的几台机子上。
问:为何taskmanager会超过设定的数量?运行一个wordcount时,每个taskmanager的slot设置为4,当并行度设置为6时,还是都在一个host上运行,并没有新的taskmanager,为何?
答:以上问题,究其原因都是yarn-session并没有起到预分配taskmanager的作用,那么到底是哪里出错了呢?