我正在使用这两个实时数据流框架处理器。我找遍了所有的地方,但我找不到这两个框架之间有很大的区别。特别是,我想知道他们是如何工作的基础上的数据或拓扑等大小。
区别主要在于处理数据流的抽象级别。
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)。这个数值是多少?