apache-storm - 了解Storm消息的处理流程

标签 apache-storm

1.我有一个拓扑(1 个 spout 和 3 个 bolt)和 3 台机器(1 个 nimbus 和 2 个工作节点)。我想在所有 3 个节点上运行我的拓扑还是在 nimbus 上运行就足够了? nimbus 会负责将代码分发到其他节点吗?

2.我的 spout 将在 nimbus 或任何工作节点上运行?

3.这3个 bolt 是在3个不同的节点上运行还是在同一个节点上运行?它会被 nimbus 照顾吗?

4.我们如何跟踪节点中bolt的处理?

5.是否有任何文档可以理解在 Storm 中处理消息的完整流程?

最佳答案

答案:

  • Nimbus 只是维护拓扑。部署主 jar 等任务是 nimbus 所做的,但 nimbus 本身不做任何与拓扑相关的处理。所以你肯定需要工作节点。拥有多个工作节点总是好的,这样 Storm 拓扑结构对于任何工作失败的情况都是有弹性的。当启动 nimbus 节点时,需要指定 nimbus 服务器,然后它会自动选择拓扑 jar 在这个工作节点上运行。
  • 正如第一点提到的,nimbus 只是一个执行任务的管理器,spout 只在工作节点上运行。
  • 对于您的第三个问题,我建议您阅读此 http://www.michael-noll.com/blog/2012/10/16/understanding-the-parallelism-of-a-storm-topology/
  • 当你开始你的 Storm 处理时查看storm-ui,它会告诉你管道中的每个步骤是如何执行的,因此你可以在查看它之后调整每个步骤的并行度。
  • 要详细了解 Storm,请参阅 github 上的 Storm 教程 https://github.com/nathanmarz/storm/wiki/_pages
  • 关于apache-storm - 了解Storm消息的处理流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21950757/

    相关文章:

    apache-kafka - KafkaSpout(空闲)产生巨大的网络流量

    java - 如何识别所有发射是否到达 bolt ?

    java.lang.RuntimeException : java. lang.ClassCastException : [B cannot be cast to java. lang.String

    apache-storm - 有什么方法可以在 Storm bolt 的一部分中确认元组

    java - 使用 Storm 爬虫对每个域进行不同设置(例如速度)的特定于域的爬行

    java - 如何解析来自Storm方案类中kafka主题的json数据?

    java - 如何在storm-project中配置不同的logback.xml?

    java - 如何将数据从 Cassandra 导出到 mongodb?

    redis - 在 Storm 中计算前 10 个结果

    linux - apache storm 启动错误 normclasspath = cygpath if sys.platform == 'cygwin' else identity