在 Spark Stream 中,我们为几乎实时的微批处理设置批处理间隔。在 Flink (DataStream) 或 Storm 中,stream 是实时的,所以我猜没有批处理间隔这个概念。
在kafka中,消费者在拉,我想象Spark使用batch interval参数从Kafka broker中拉出消息,那么Flink和Storm是怎么做的呢?我想象 Flink 和 Storm 在快速循环中拉取 Kafka 消息以形成实时流源,如果是这样,如果我将 Spark 批处理间隔设置为小,例如 100ms、50ms 甚至更小,我们和 Spark 之间是否存在显着差异流媒体和 Flink 还是 Storm?
同时,在 Spark 中,如果流数据很大,batch 间隔太小,我们可能会遇到有大量数据等待处理的情况,因此会发生变化,我们会看到 OutOfMemory 发生。它会发生在 Flink 或 Storm 中吗?
我已经实现了一个应用程序来进行主题到主题的转换,转换很容易,但是源数据可能很大(考虑它是一个物联网应用程序)。我的原始实现由reactive-kafka支持,它在我的独立 Scala/Akka 应用程序中运行良好。我没有实现要集群的应用程序,因为如果我需要它,Flink/Storm/Spark 已经在那里了。然后我找到了 Kafka Stream,对我来说,从客户端使用的角度来看,它类似于 reactive-akka。那么,如果我在独立应用程序或微服务中使用 Kafka Stream 或 reactive-kafka,我们是否需要关注客户端代码的可靠性/可用性?