我使用Flink进行了一些概念验证工作,并且已经到了在4节点集群上尝试各种工作(拓扑?)的地步。
机器:
- 32芯
- 96g Gb RAM
拓扑结构从3到6个"任务"(工人?螺栓类似物?)不等。我希望这里有人能提供一些建议的设置。具体而言:
- taskmanager.numberOfTaskSlots:是否将其设置为核心数
- taskmanager.heap.mb:"这个值应该尽可能大。"96Gb?真的吗
- parallelism.defect:尝试将其设置为30。出现此错误1
- parallelization.degree.defect:我试着提高这个值,但似乎没有任何效果。对于并行性,任务总是显示"1"
- 人们觉得有用/有趣的其他设置吗
特别的一项任务是:阅读Kafka,其中主题有6个分区。我想从这些分区中的每一个读取、聚合并写入Cassandra。当我在Storm中实现这项工作时,它有6个螺栓来读取数据,还有好几倍的螺栓要写入。(IE 6读,18写)
如果Flink被我的公司采用,每台机器都将同时运行许多作业。在这种情况下,配置参数将如何更改?
FWIW:集群是v1.0 SNAPSHOT.
编辑:这似乎很有用。
1"网络缓冲区数量不足:需要30个,但只有8个可用。网络缓冲区的总数目前设置为2048。"这是否意味着在什么都没有发生的情况下使用2000个缓冲区?
有多种来源可以帮助您设置正确的设置(见下文)
要立即解决您的问题:
- taskmanager.numberOfTaskSlots:是否将其设置为核心数
是 -
taskmanager.heap.mb:"这个值应该尽可能大。"96Gb?真的吗
是的,但这取决于如果您在集群中手动部署Flink,则假设Flink是唯一运行的系统。如果您不使这个参数尽可能大,那将是一种浪费。对于与其他系统共享的设置,您可能需要考虑使用YARN。另一方面,在独立集群模式下运行时,您可能希望为操作系统保留一些内存,如果您知道有其他组件在运行,则可能不会将所有内存分配给Flink。但是,由于Flink在内部管理内存,因此应该避免使用未使用的内存。 -
parallelism.defect:尝试将其设置为30。收到此错误
查看以下配置参数:taskmanager.network.numberOfBuffers
和taskmanager.network.bufferSizeInBytes
(也可以查看此处http://www.slideshare.net/FlinkForward/fabian-hueske-juggling-with-bits-and-bytes?ref=http://flink-forward.org/?post_type=会话,在此处http://de.slideshare.net/robertmetzger1/apache-flink-hands-on在这里https://www.youtube.com/playlist?list=PLDX4T_cnKjD3F7oRSov8hT21rXx1SyXf8) -
parallelization.degree.defect:我试着提高这个值,但似乎没有任何效果。对于并行性,任务总是显示"1"
如果我没有错,这个参数被替换为parallelism.default
查看此链接了解更多背景信息:
- https://flink.apache.org/faq.html#what-is-the-parallelism-how-do-i-set-it
- https://ci.apache.org/projects/flink/flink-docs-master/setup/config.html#common-选项
- https://flink.apache.org/news/2015/05/11/Juggling-with-Bits-and-Bytes.html
一般常见问题解答、Flink博客和Flink Forward对话:
- https://flink.apache.org/faq.html
- https://flink.apache.org/blog/
- http://flink-forward.org/?post_type=session