在Spark流处理中,我们设置批处理间隔以进行准实时的微批处理。在Flink(DataStream)或Storm中,流是实时的,所以我猜没有批处理间隔的概念。
在Kafka中,消费者是拉取数据的,我想Spark使用批处理间隔参数从Kafka代理服务器中拉出消息,那么Flink和Storm是如何做到的呢?我想Flink和Storm通过快速循环来拉取Kafka消息以形成实时流源,如果这样的话,并且我将Spark批处理间隔设置得很小,比如100ms、50ms甚至更小,那么Spark Streaming和Flink或Storm之间是否有显著差异?
同时,在Spark中,如果流式数据很大,而批处理间隔太小,我们可能会遇到等待处理的数据量很大的情况,因此有可能会发生OutOfMemory错误。在Flink或Storm中会发生吗?
我已经实现了一个应用程序来进行主题到主题的转换,转换很容易,但源数据可能非常庞大(考虑到这是一个物联网应用)。我的原始实现是由reactive-kafka支持的,在我的独立Scala / Akka应用程序中运行良好。我没有将应用程序实现为集群,因为如果需要,Flink / Storm / Spark已经存在。然后我发现了Kafka Stream,对我来说它与客户端使用视图中的reactive-akka类似。因此,如果我在独立应用程序或微服务中使用Kafka Stream或reactive-kafka,我们是否需要关注客户端代码的可靠性/可用性?
在Kafka中,消费者是拉取数据的,我想Spark使用批处理间隔参数从Kafka代理服务器中拉出消息,那么Flink和Storm是如何做到的呢?我想Flink和Storm通过快速循环来拉取Kafka消息以形成实时流源,如果这样的话,并且我将Spark批处理间隔设置得很小,比如100ms、50ms甚至更小,那么Spark Streaming和Flink或Storm之间是否有显著差异?
同时,在Spark中,如果流式数据很大,而批处理间隔太小,我们可能会遇到等待处理的数据量很大的情况,因此有可能会发生OutOfMemory错误。在Flink或Storm中会发生吗?
我已经实现了一个应用程序来进行主题到主题的转换,转换很容易,但源数据可能非常庞大(考虑到这是一个物联网应用)。我的原始实现是由reactive-kafka支持的,在我的独立Scala / Akka应用程序中运行良好。我没有将应用程序实现为集群,因为如果需要,Flink / Storm / Spark已经存在。然后我发现了Kafka Stream,对我来说它与客户端使用视图中的reactive-akka类似。因此,如果我在独立应用程序或微服务中使用Kafka Stream或reactive-kafka,我们是否需要关注客户端代码的可靠性/可用性?