>我正在用纱线上的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,确保你的作业以正确的并行性运行。您还可以检查时间去哪里(哪个操作)。