[英]Low performance of yarn cluster with batch flink jobs
我出于测试目的在纱线上玩flink,我具有以下设置:
3台AWS机器(32核和64 GB内存)
我手动安装了带有hdfs和yarn服务的Hadoop 2(不使用EMR)。
#1机器运行在主文件中定义的HDFS-(NameNode&SeconderyNameNode)和YARN-(resourcemanager)
#2机器运行HDFS-(datanode)和YARN-(nodemanager),在slaves文件中定义
#3机器运行HDFS-(datanode)和YARN-(nodemanager),在slaves文件中定义
我想提交Apache flink作业,该作业从hdfs读取大约20GB的日志,然后对其进行处理,然后将结果存储在cassandra中
问题是我认为我做错了,因为这项工作花费大量时间,大约一个小时,而且我认为它不是很优化。
我使用以下命令运行flink:
./flink-1.3.0/bin/flink运行-yn 2 -ys 30 -yjm 7000 -ytm 8000 -m yarn-cluster /home/ubuntu/reports_script-1.0-SNAPSHOT.jar
而且我在flink日志上看到有60个任务槽正在使用中,但是当我查看yarn页面时,我看到vcore和内存的使用率非常低
我究竟做错了什么?
需要注意的几件事:
每个TaskManager容器的vcore数量的默认值为1。 要增加它,请使用yarn.containers.vcores
参数。 除非您使用容器执行程序来强制容器仅使用vcore
使用许多CPU内核,否则它可能对工作完全没有影响(并且在YARN UI中看起来很奇怪)。
为TaskManager提供7GB内存意味着它实际上将获得约5.2 GB的JVM堆,因为对JVM采取了一些措施。 5.3GB的30个插槽意味着每个插槽约170 MB的内存。 那行得通,但是实际上并不很多。
检查Flink Web UI,以确保您的作业确实以适当的并行度运行。 您还可以检查时间在哪里(执行哪个操作)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.