gpt4 book ai didi

hadoop - Storm 不受控制的元组乘法

转载 作者:行者123 更新时间:2023-12-02 21:39:04 25 4
gpt4 key购买 nike

我试图将卡夫卡数据通过hdfs和 hive 中的 Storm 。我正在与hortonworks合作。因此,我具有以下结构,如在许多教程(http://henning.kropponline.de/2015/01/24/hive-streaming-with-storm/)中所见(经过一些修改):

 TopologyBuilder builder = new TopologyBuilder();

builder.setSpout("kafka-spout", kafkaSpout);

builder.setBolt("hdfs-bolt", hdfsBolt).globalGrouping("kafka-spout");

builder.setBolt("parse-bolt", new ParseBolt()).globalGrouping("kafka-spout");

builder.setBolt("hive-bolt", hiveBolt).globalGrouping("parse-bolt");

我将kafka-spout数据直接发送到hdfs-bolt,当我仅使用hdfs-bolt时,该数据有效。当我添加parse-bolt来解析kafka-data并将其发送到hive-bolt时,整个系统会发疯。即使iam仅通过kafka发送一条消息,该消息也会被kafka-spout无限次复制,并被写入hdfs无限。

如果parse-bolt中有错误,hdfs-bolt是否仍能正常工作?我是这个话题的新手,有人可以看到一个简单的初学者错误吗?我很感谢任何建议。

最佳答案

您是否在两个 bolt 执行结束时都收到消息?

当您从 kafka-spout 中从同一流中读取消息时,消息将被 anchor 定到相同的spout,但具有唯一的messageId。因此,从本质上讲,即使您的parse-bolt的元组失败了,由于它已 anchor 定在同一个喷口上,它也会在喷口处重播。这将导致另一个tuple具有不同的messageId,但订阅的所有 bolt 均播放相同的内容,在您的情况下为 parse-bolt hdfs-bolt
请记住,重播发生在Spout上,因此从Spout订阅到该流的所有内容都将获得冗余消息。

关于hadoop - Storm 不受控制的元组乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30051591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com