具有批量搓丝作业的纱线簇的低性能

时间:2017-06-23 07:57:19

标签: yarn hadoop2 apache-flink flink-streaming

为了测试目的,我正在玩睫毛 我有以下设置:

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和内存的使用率非常低

Hadoop yarn page

我做错了什么?

1 个答案:

答案 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以确保您的作业以正确的并行性运行。您还可以查看时间在哪里(哪个操作)。