我还不明白的是,喷口是否也是这样。如果一个spout发出一个元组(即,spout中的emit()
函数被执行),并且spout运行的计算机在此后不久崩溃,该元组会被zookeeper复活吗?还是我们需要Kafka来保证这一点?
附注。我理解,在对emit()
的调用中,必须为spout发出的元组分配唯一的ID。
P.P.S.我在书中看到的示例代码使用concurrenthashmap
之类的东西来跟踪哪些喷出的元组尚未被加密。这是不是自动被Zookeeper坚持下来的?如果不是,那我真的不应该这么做,对吧?我该怎么做呢?利用Kafka?
Florian Hussonnois在这篇storm-user线程中彻底而清晰地回答了我的问题。这是他的回答:
实际上,元组并没有持久化到“zookeeper”中。如果您的“spout”发出了一个具有唯一id的元组,那么它会自动在内部被storm(即ackers)跟随。因此,如果发出的元组由于bolt失败而失败,Storm将以唯一的id作为参数调用源spout任务的方法'fail'。
然后由您重新发出失败的元组。
这里可能发生了同样的事情:错误backtype.storm.util-Async循环死亡!BufferUnderFlowException:null,但我将添加一个完整的堆栈跟踪和一些更多的上下文。 Storm版本-9.3 Storm-Kafka版本-9.3 Kafka版本-0.8.2-beta 堆栈跟踪: Spout代码(注意,出于调试目的,我使用的是一个静态定义的分区映射,只有一个代理):
我使用storm0.9.4和storm-kafka:0.9.0-wip16a-scala292作为从kafka0.7读取的依赖项。 我们的Kafka保留政策是7天。 我从经纪人的最新偏移量开始读取。
我想知道是否有任何Kafka喷口支持安全的Kafka经纪人。apache storm的KafkaSpout不支持SSL Kafka。 下面提到的Kafka不接受SSL Kafka生产者/消费者支持的任何参数。 请让我知道有没有任何方法,我们可以实现安全的Kafka消息流处理与Storm拓扑。
我用的是Kafka。请在下面找到测试程序。 我正在使用Storm 0.8.1。在Storm 0.8.2中存在多方案类。我会用那个。我只想知道早期版本是如何通过实例化String计划()类来工作的?我在哪里可以下载早期版本的Kafka喷口?但是我怀疑这是一个正确的选择,而不是在Storm 0.8.2上工作。???(困惑) 当我在暴风集群上运行代码(如下所示)时(即当我推我的拓扑时),我得到以下错误(
我只是在试用这里提到的kafka-storm喷口https://github.com/nathanmarz/storm-contrib/tree/master/storm-kafka,我使用的配置如下所述。 但是,上面的喷子从Kafka主题中获取消息的速度大约是每秒7000条,但我预计每秒大约有50000条消息。我尝试了在spoutConfig中增加提取缓冲区大小的各种选项,但没有看到任何结果。
我正在尝试用我的Storm设置实现最大的性能。我正在通过Kafka发送数以万计的消息,这些消息将被Storm拓扑接收。 当我在Storm UI中查看时,我注意到所有消息都流向一个执行器,而不是在所有执行器之间进行负载平衡。(见附件截图)。