【问题标题】:Storm 1.0.2 hdfs-bolt acking tuples when no data is sent to itStorm 1.0.2 hdfs-bolt 在没有数据发送时确认元组
【发布时间】:2017-03-22 08:08:56
【问题描述】:

我已经实现了一个 Storm 拓扑,它从 Kafka Spout 接收 JSON 数据,通过两个螺栓进行处理,然后使用 hdfs-bolt 将消息输出到 hdfs。将 Storm 0.9.6 与 Kafka 0.8.2.1 和 Hadoop 2.5.0 一起使用,效果非常好。我为其实现的生产系统正在将工具更新到 Storm 1.0.2、Kakfa 0.10.1.0 和 Hadoop 2.6.0。当我更新上述版本的包信息时,hdfs bolt 现在在我通过 spout 发送任何数据之前就开始确认“ghost”元组。它继续在 UI 中显示确认,直到拓扑被终止。此外,只有在我实际处理数据时,有时才会将消息写入 hdfs。大多数时候没有输出。关于版本中的哪些差异会导致此类问题的任何想法?

【问题讨论】:

  • 分享您的实现代码/代码 sn-p 将有助于更好地理解问题,以提供任何有价值的输入和其他人学习。

标签: apache hadoop apache-storm


【解决方案1】:

不确定,但很可能您正面临发射到螺栓的刻度元组。尝试在您的执行逻辑中添加以下条件来处理此问题:

public void execute(Tuple tuple, BasicOutputCollector oc){      
    if (!TupleUtils.isTick(tuple))
    {
         //Your code
    }
}

【讨论】:

  • 感谢您的回复。我将在今天晚些时候尝试。奇怪的是它只有 hdfs 螺栓,没有其他螺栓。此外,我发现处理大量元组将强制元组被完全处理并将记录写入 hdfs。发送包含大约 7-20 条记录的测试文件不起作用。我将其设置为更新 ui 并在每个元组之后写入 hdfs。对这个问题有任何见解吗?
猜你喜欢
  • 2015-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-03
  • 1970-01-01
  • 2014-02-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多