【问题标题】:Difference between Apache Storm and FlinkApache Storm 和 Flink 的区别
【发布时间】:2019-05-03 07:04:13
【问题描述】:

我正在使用这两个实时数据流框架处理器。我到处搜索,但我找不到这两个框架之间的大区别。特别是我想知道它们是如何根据数据大小或拓扑结构等工作的。

【问题讨论】:

  • 我不明白你的评论。
  • 您的问题不是与我链接的问题重复(“Flink 和 Storm 之间的主要区别是什么?”)?如果不是,最好改写问题标题以指出差异。
  • @FabianHueske 我猜你把链接弄混了。这似乎是重复的:stackoverflow.com/questions/30699119/…
  • 完全是@TobiSH 我不理解 Fabian 的帖子,因为它是我帖子的链接报告。我的问题有点不同,您可以在 jbx 的答案中看到这些差异。此外,另一位大 3 岁,答案可能有所不同。

标签: bigdata cluster-computing apache-flink apache-storm


【解决方案1】:

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

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

有一个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);

Apache Flink 具有更类似于功能的接口来处理事件。如果您习惯于 Java 8 风格的流处理(或其他函数式风格的语言,如 Scala 或 Kotlin),这看起来会非常熟悉。它还有一个不错的基于 Web 的监控工具。 它的好处是它具有用于按时间窗口等聚合的内置结构。(在 Storm 中,您可能也可以使用 Trident 来做到这一点)。

来自文档:

 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,只是因为当时感觉它记录得更好,而且我更容易开始使用它。风暴稍微模糊一些。有一个course on Udacity 让我更了解它,但最终还是觉得 Flink 更适合我的需求。

您可能还想看看这个answer here,虽然有点旧,所以这两个项目从那时起一定已经发展了。

【讨论】:

  • 感谢您的回答。我正在做我的硕士论文,我必须分析这两个框架并在它们上比较一个应用程序,所以我正在寻找一个可以比较的。您能否向我解释一下集群大小之间的差异?你知道我可以使用的实时流吗?谢谢
  • 集群大小是指可以拥有多少个节点?不确定可扩展性属性,我想最好的办法是在两者上构建相同的应用程序并使用相同的硬件对它们进行基准测试。您可以使用 API 来查看一些关键字的 Twitter 提要,或者汇总股票价格的价格变化,或者加密货币价格的变化(这些交易所的 API 往往非常好,因为它们是机器人使用)。您可以计算所有移动平均线和指标,作为实时数据聚合的展示。
猜你喜欢
  • 1970-01-01
  • 2015-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多