当前位置: 首页 > 知识库问答 >
问题:

阿帕奇Storm和Flink的区别

东郭翰音
2023-03-14

我正在使用这两个实时数据流框架处理器。我找遍了所有的地方,但我找不到这两个框架之间有很大的区别。特别是,我想知道他们是如何工作的基础上的数据或拓扑等大小。

共有1个答案

徐嘉谊
2023-03-14

区别主要在于处理数据流的抽象级别。

Apache Storm的级别更低一些,它处理连接在一起的数据源(spout)和处理器(Bolts),以反应的方式对单个消息执行转换和聚合。

有一个Trident API,它将这个低级消息驱动视图抽象成更多的聚合查询,比如构造,这使得集成起来更加容易。(还有一个类似SQL的接口用于查询数据流,但仍标记为实验性的。)

TridentState wordCounts =
     topology.newStream("spout1", spout)
       .each(new Fields("sentence"), new Split(), new Fields("word"))
       .groupBy(new Fields("word"))
       .persistentAggregate(new MemoryMapState.Factory(), new Count(), new Fields("count"))                
       .parallelismHint(6);
 DataStream<WordWithCount> windowCounts = text
            .flatMap(new FlatMapFunction<String, WordWithCount>() {
                @Override
                public void flatMap(String value, Collector<WordWithCount> out) {
                    for (String word : value.split("\\s")) {
                        out.collect(new WordWithCount(word, 1L));
                    }
                }
            })
            .keyBy("word")
            .timeWindow(Time.seconds(5), Time.seconds(1))
            .reduce(new ReduceFunction<WordWithCount>() {
                @Override
                public WordWithCount reduce(WordWithCount a, WordWithCount b) {
                    return new WordWithCount(a.word, a.count + b.count);
                }
            });

当我评估这两个的时候,我选择了Flink,只是因为当时它感觉更有文件记录,我更容易开始使用它。Storm略显模糊。有一个关于Udacity的课程帮助我更好地理解了它,但最终Flink还是觉得更适合我的需求。

您可能还想看看这里的答案,尽管有点老,所以这两个项目肯定都是从那时起发展起来的。

 类似资料:
  • 我正在做一个学术项目,涉及传感器的流数据。我已经包围了苍鹭(Storm的接班人)和尼菲。两者都支持内置背压,这对我的项目至关重要。Apache Nifi和Heron之间的主要区别是什么? 哪款更适合物联网应用?

  • Apache Kafka:分布式消息传递系统 Apache Storm:实时消息处理 我们如何在实时数据管道中使用这两种技术来处理事件数据? 在实时数据管道方面,我觉得两者做的工作是一样的。如何在数据管道上同时使用这两种技术?

  • 我正在使用Flink从Apache Pulsar读取数据。我在pulsar中有一个分区主题,有8个分区。在本主题中,我生成了1000条消息,分布在8个分区中。我的笔记本电脑中有8个内核,因此我有8个子任务(默认情况下,并行度=#个内核)。在执行Eclipse中的代码后,我打开了Flink UI,发现一些子任务没有收到任何记录(空闲)。我希望所有8个子任务都能得到利用(我希望每个子任务都映射到我的主

  • 下面是我成功运行两三天后持续获得的异常的详细信息。有人能指导我吗?

  • 我在Apache Storm拓扑上运行了一个性能测试,并注意到kinesis-spout中的“failed”计数非常高(几乎占了元组的1/3)。这个数值是多少?