【问题标题】:No output from Storm bolt风暴螺栓没有输出
【发布时间】:2015-07-09 19:58:02
【问题描述】:

我有一个非常简单的 Storm bolt,它从 Kafka spout 获取输入,应该只写入标准输出。它扩展了 BaseRichBolt。两种相关的方法是:

  public void prepare(Map stormConfig,
                      TopologyContext context,
                      OutputCollector collector)
    {
    collector_ = collector;
    logger_.info("TestEchoBolt prepared.");
    System.out.println("TestEchoBolt prepared.");
    }

  public void execute(Tuple input)
    {
    logger_.info(input.getFields().toString());
    System.out.println(input.getFields().toString());
    collector_.ack(input);
    }

它是这样连接的:

    builder_ = new TopologyBuilder();
    builder_.setSpout("kafka-spout",kafkaSpout,1);
    builder_.setBolt("echo-bolt",echoBolt)
            .shuffleGrouping("kafka-spout");

当我将拓扑提交到在本地机器上运行的集群时,我看到了构造函数的输出,但我从未看到螺栓的任何输出。 Storm UI 显示正在发出、执行和确认的元组,没有错误。

我的输出在哪里?

(这是 Storm 0.9.5 和 Kafka 0.8.2.1。)

【问题讨论】:

  • System.out 应该被重定向到工作日志文件。
  • storm.local.dir 设置为“/tmp/storm”,但我在工作目录中看不到任何日志文件。
  • 日志文件位于 $STORM_HOME/logs(storm.local.dir 用于内部执行)
  • 就是这样。我需要设置storm.log.dir 以将它们带到我想要的位置。谢谢!
  • 要不要留下自己的答案并接受它,以便其他人可以有很好的参考?

标签: apache-storm


【解决方案1】:

Matthias 在 cmets 中答对了。除非在 $STORM_HOME/conf/storm.yaml 中设置了storm.log.dir 属性,否则所有输出都会转到 $STORM_HOME/logs。

输出将在 .../logs/worker-*.log 文件中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多