【问题标题】:Configuring storm cluster for production cluster为生产集群配置风暴集群
【发布时间】:2016-07-08 01:40:40
【问题描述】:

我们已经为风暴集群配置了一台 nimbus 服务器和三台主管。发布了三种不同计算的拓扑,如下所示

  • Topology1 : 从 MongoDB 读取原始数据,进行一些计算并存储回结果

  • Topology2 : 读取 topology1 的结果并进行一些计算并将结果发布到队列中

  • Topology3 : 使用队列中 topology2 的输出,调用 REST 服务,从 REST 服务获取回复,更新 MongoDB 集合中的结果,最后发送电子邮件。

作为新的风暴,正在寻找有关以下问题的专家建议

  1. 有没有办法将所有拓扑都可以引用的所有配置(例如 config.json)外部化?

目前连接 MongoDB、MySql、Mq、REST url 的配置是硬编码在 java 文件中的。为每个客户定制源文件并不是一个好习惯。

  1. 想要在每个阶段进行日志 [Spouts and Bolts],将集群可以使用的 log4j.xml 发布/存储在哪里?

  2. 像 REST 调用一样从 bolt 执行阻塞调用是否正确?

任何帮助将不胜感激。

【问题讨论】:

    标签: java apache-storm computation


    【解决方案1】:
    1. 由于每个拓扑只是一个 Java 程序,只需将配置传递到 Java Jar 中,或将路径传递给文件。拓扑可以在启动时读取文件,并在实例化组件时将任何配置传递给组件。

    2. Storm 使用 slf4j 开箱即用,它应该很容易在您的拓扑中使用。如果您使用默认配置,您应该能够通过 UI 看到日志,或者转储到磁盘。如果您找不到它们,有许多指南可以提供帮助,例如http://www.saurabhsaxena.net/how-to-find-storm-worker-log-directory/.

    3. 使用storm,您可以灵活地将并发性推送到组件级别,并通过实例化多个螺栓来获得多个执行器。这可能是最简单的方法,我建议您从那里开始,然后在拓扑内部介绍执行器的复杂性,以异步进行 HTTP 调用。

    请参阅http://storm.apache.org/documentation/Understanding-the-parallelism-of-a-Storm-topology.html,了解 Storm 中并行性的规范概述。从简单开始,然后根据需要进行调整,就像任何事情一样。

    【讨论】:

    • 谢谢@Cory。 #1 和 #2 令人大开眼界。我对 #3 持怀疑态度,因为据我了解,storm 是一个用于分布式计算的平台,主要是 CPU 绑定的工作。用例 #3,spout 是简单的 Mq 消费者,并且 bolts 使用数据触发 REST 调用,这是 IO 绑定调用。看起来#3 是针对风暴的强度(CPU 绑定计算)。请澄清。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-25
    • 1970-01-01
    • 1970-01-01
    • 2016-08-23
    相关资源
    最近更新 更多