太多的元组故障 - 风暴拓扑

时间:2015-07-23 09:10:06

标签: apache-kafka apache-storm

我有一个风暴应用程序,其中我有1个喷口和5个螺栓。拓扑工作正常。但是我在30分钟后出现$.ajax({ url: 'https://login.live.com/oauth20_authorize.srf?client_id=*********&scope=onedrive.readwrite&response_type=token&redirect_uri=http://localhost:54540/Home/Dashboard', dataType: "json", type: "GET", contentType: 'application/json; charset=utf-8', async: true, processData: false, cache: false, success: function(data) { alert(data); }, error: function(xhr) { alert('error'); } }); 错误。在第一个螺栓到第二个螺栓中,由于某些分析条件,仅处理20%的数据。丢弃了80%的数据。我认为这个错误是由于丢弃80%的数据或其他任何原因造成的。我不知道原因是什么以及如何解决它。

1 个答案:

答案 0 :(得分:3)

如果您在Storm中使用容错(即,将消息ID分配给您的喷口中的元组),则需要使用消耗喷口的螺栓中的ack 所有元组&#39输出。即使你因为过滤条件而丢弃一些元组,因为"丢弃一个元组"仍然意味着,这个元组是完全处理的,也就是说,你需要告诉Storm这个 - 否则,Storm认为出现了问题(由于超时)并且使元组失败。

KafkaSpouts自动分配消息ID。你只需要确认所有传入的元组:

void execute(Tuple input) {
    if(input-is-forwarded) {
       collector.emit(input, new Values(/* generate output tuple */);
    }
    // ack tuple (regardless if forwarded or discarded)
    collector.ack(input);
}