我对apache flink是一个新手,我正在尝试了解一些与kafka一起扩展flink流媒体作业的最佳实践。有些问题我无法找到合适的答案,包括:
您可以/应该运行多少流作业?运行太多流是否存在可伸缩性问题?多少钱太多了?
如果我们确实运行了2000个流来满足业务需要,那么管理这些流的最佳方法是什么?
从一个流到另一个流读取流数据的首选方法是什么?我们可以加入流、执行连续查询等吗。。。?
提前感谢您的支持,如果这些问题看起来有些基本,请道歉,但我正在尝试更好地处理这项技术。我已经阅读了大量的文档,但无可否认,由于我在这方面缺乏经验,我可能没有把一些概念放在一起。谢谢你的帮助!
1条答案
按热度按时间efzxgjgh1#
流的数量没有限制,flink将根据作业管理器/任务管理器的内存/cpu、使用的并行化和插槽的数量进行扩展。我用Yarn来管理资源。如果要连接的流的数量很高,那么我们需要稍微谨慎一点,即不是所有/大部分的处理都在某些任务管理器上进行,因为这会减慢进程。Kafka流本身可能存在滞后,或者由于某些任务经理负载过重而导致的内部滞后肯定会出现,因此需要对此进行预防性检查。
连续查询支持已经作为最新flink版本的一部分构建,您可以查看flink文档。
如果从一个数据流读取到另一个数据流,您的意思是用flink术语连接两个数据流,那么我们可以在一个公共键上连接它们并保持一个值状态。请注意,值状态是在任务管理器中维护的,不会在任务管理器之间共享。否则,如果您暗示两个或多个流的并集,那么我们可以以这样的方式构建flatmapfunctions:来自这样的流的数据以标准格式出现。
联合示例: