为了测试目的,我正在玩睫毛 我有以下设置:
aws上的3台机器(32核和64 GB内存)
我手动安装了带有hdfs和yarn服务的Hadoop 2(不使用EMR)。
机器#1运行HDFS - (NameNode& SeconderyNameNode)和YARN - (resourcemanager),在主文件中定义
机器#2运行HDFS - (datanode)和YARN - (nodemanager),在从属文件中定义
机器#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_script-1.0-SNAPSHOT.jar
我在flink日志上看到有60个任务槽正在使用中,但是当我看到纱页时,我发现vcores和内存的使用率非常低
我做错了什么?
答案 0 :(得分:1)
需要注意的一些事项:
每个TaskManager容器的vcores数量的默认值为1。要增加它,请使用yarn.containers.vcores
参数。除非您使用容器执行程序来强制容器仅使用vcore
个许多CPU内核,否则它可能对作业完全没有影响(并且在YARN UI中看起来很奇怪)。
为TaskManager提供7GB内存意味着它实际上会获得大约5.2 GB的JVM堆,因为有些" cutoff"是为了JVM。 30个插槽的5.3GB意味着每个插槽大约170 MB的内存。这有效,但实际上并不是很多。
检查Flink Web UI以确保您的作业以正确的并行性运行。您还可以查看时间在哪里(哪个操作)。