【问题标题】:Low performance of yarn cluster with batch flink jobs具有批处理 flink 作业的纱线集群性能低下
【发布时间】:2017-06-27 19:43:21
【问题描述】:

我正在使用 flink on yarn 进行测试 我有以下设置:

aws 上的 3 台机器(32 个内核和 64 GB 内存)

我手动安装了带有 hdfs 和 yarn 服务的 Hadoop 2(不使用 EMR)。

机器 #1 运行 HDFS - (NameNode & SeconderyNameNode) 和 YARN - (resourcemanager) ,在 masters 文件中定义

机器 #2 运行 HDFS - (datanode) 和 YARN - (nodemanager) ,在 slaves 文件中定义

机器 #3 运行 HDFS - (datanode) 和 YARN - (nodemanager) ,在 slaves 文件中定义

我想提交从 hdfs 读取大约 20GB 日志的 Apache flink 作业处理它们,然后将结果存储在 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 个任务槽正在使用中,但是当我查看 yarn 页面时,我发现 vcore 和内存的使用率非常低

Hadoop yarn page

我做错了什么?

【问题讨论】:

  • Cassandra 是否可能是配置错误/瓶颈?您是否尝试将作业从 HDFS 运行到 HDFS?
  • cassandra 肯定不是瓶颈,它是处理速度最快的部分。真正困扰我的是,在我附加到问题的图片上,我可以看到它打开了 3 个容器(应用程序主机和 2 个用于 flink 的任务管理器)并且它们只使用 3 个 Vcor​​es ......我不知道如何利用集群的所有 vcore 和内存。
  • 如果要配置每个容器的 vcore 数量,请使用配置选项:yarn.containers.vcores。更多 Yarn 特定配置选项可以找到here

标签: hadoop-yarn hadoop2 apache-flink flink-streaming


【解决方案1】:

需要注意的几点:

  • 每个 TaskManager 容器的 vcore 数量的默认值为 1。要增加它,请使用yarn.containers.vcores 参数。除非您使用强制容器仅使用 vcore 多个 CPU 内核的容器执行器,否则它可能对工作没有任何影响(并且仅在 YARN UI 中看起来很奇怪)。

  • 为 TaskManager 分配 7GB 内存意味着它实际上将获得大约 5.2GB 的 JVM 堆,因为 JVM 采用了一些“截断”。 30 个插槽有 5.3GB 意味着每个插槽大约 170 MB 的内存。这行得通,但实际上并不多。

  • 检查 Flink Web UI 以确保您的作业确实以正确的并行度运行。您还可以检查时间在哪里(哪个操作)。

【讨论】:

    猜你喜欢
    • 2016-04-09
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多