批量flink作业的Yarn簇的低性能

zu0ti5jz  于 2021-06-25  发布在  Flink
关注(0)|答案(1)|浏览(355)

我正在用flink on yarn进行测试我有以下设置:
aws上的3台机器(32核和64 gb内存)
我手动安装了带有hdfs和yarn服务的hadoop2(不使用emr)。
machine#1运行hdfs-(namenode&seconderynamenode)和yarn-(resourcemanager),在masters文件中定义
machine#2运行hdfs-(datanode)和yarn-(nodemanager),在从属文件中定义
machine#3运行hdfs-(datanode)和yarn-(nodemanager),在从属文件中定义
我想提交apache flink作业,从hdfs读取大约20gb的日志,然后处理它们,然后将结果存储在cassandra中
问题是,我认为我做错了,因为这项工作需要相当多的时间,大约一个小时,我认为它不是很优化。
我用以下命令运行flink:
./flink-1.3.0/bin/flink run-yn 2-ys 30-yjm 7000-ytm 8000-m yarn cluster/home/ubuntu/reports\u script-1.0-snapshot.jar
我在flink日志上看到有60个任务槽在使用中,但是当我在yarn页面上看到vCore和内存的使用率非常低
hadoopYarn页面
我做错什么了?

i5desfxk

i5desfxk1#

注意以下几点:
每个taskmanager容器的vCore数的默认值为1。要增加,请使用 yarn.containers.vcores 参数。除非您使用的容器执行器强制容器只使用 vcore 对于许多cpu核心来说,它可能根本不会对作业产生影响(而且只是在ui中看起来很奇怪)。
将7gb内存提供给taskmanager意味着它实际上将获得大约5.2GB的jvm堆,因为jvm需要一些“中断”。对于30个插槽来说,5.3gb意味着每个插槽大约有170MB的内存。这很管用,但实际上并不多。
检查FlinkWebUI以确保您的作业以适当的并行度运行。你也可以检查时间的去向。

相关问题