具有批处理 flink 作业的纱线簇性能低



>我正在用纱线上的flink进行测试 我有以下设置:

AWS 上的 3 台计算机(32 个内核和 64 GB 内存)

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

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

机器 #2 运行 HDFS - (数据节点) 和 YARN - (节点管理器),在从属文件中找到

机器 #3 运行 HDFS - (数据节点) 和 YARN - (节点管理器),在从属文件中定义

我想提交 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 个任务槽正在使用中,但是当我查看 Yarn 页面时,我看到 vCore 和内存的使用率非常低

Hadoop 纱线页面

我做错了什么?

需要注意的几点:

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

  • 为任务管理器提供7GB内存意味着它实际上将获得大约5.2 GB的JVM堆,因为JVM需要一些"截止"。30 个插槽具有 5.3GB 意味着每个插槽大约 170 MB 内存。这行得通,但实际上并不多。

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

最新更新