2017-03-23 6 views
0

Ich integrierte Apache Storm 1.0.3 mit Apache Kafka_2.11-0.10.1.0. Storm hat ein oder zwei Menages aus dem Kafka-Thema korrekt gelesen, aber wenn der erste Bolt das Tupel angekreuzt hat, wird dieses Acked nicht in Storm UI angezeigt. Was ist das Problem?Storm UI zeigt nicht korrekt an

Andere Frage: Wenn Storm lesen zehn oder neunzehn Nachrichten von Kafka Thema, in diesem Punkt Storm UI zeigen 20 für den Bolzen acked, wenn lesen andere Gruppe von 19 Nachrichten angefügt hinzufügen in 20 mehr. Ich verstehe nicht, warum Storm UI Spout und Bolts von 20 in 20 acked zeigt. Jeder könnte mir erklären, was ist die Logik des Registers von acked und scheitern in Storm Ui-Konsole ?.

Die Konfiguration meiner Topologie ist:

final TopologyBuilder myTopology = new TopologyBuilder(); 

KafkaConfiguration kconfig = new KafkaConfiguration(); 
SpoutConfig spout = kconfig.getKafkaConfiguration(args[0], args[1], args[2], args[3]); 

myTopology.setSpout("spoutMvClient", new KafkaSpout(spout), 5); 
myTopology.setBolt("boltTransformToObject", new TransformBolt(),7).globalGrouping("spoutMvClient"); 
myTopology.setBolt("boltMVClient", new MvClientBolt(), 6).fieldsGrouping("boltTransformToObject",new Fields("objectTarget")); 

Config conf = new Config(); 
conf.setMaxSpoutPending(5000); 
try { 
    StormSubmitter.submitTopology("topologyOne", conf, myTopology.createTopology()); 
} catch (AlreadyAliveException e) { 
     e.printStackTrace(); 
} 

Mein erster TransformBolt Bolt ist:

public void execute(Tuple input) { 

    try { 
      LOG.info(input.getString(0)); 
      Transform transform = new Transform(); 
      OpenTarget openTarget = transform.getObjetGenericFromFileXml(input.getString(0)); 

      collector.emit(input, new Values(openTarget));  
      collector.ack(input);  

     } catch (Exception e) { 
      LOG.error(e.getMessage()); 
      collector.fail(input); 
     } 
} 

Antwort

0

Nach suchte ich verstanden, wie der Sturm ihre Tupeln und Shows von Storm UI acked. Es gibt eine Standard-Konfiguration, die acked Nummer im Sturm UI erlauben zeigen:

enter image description here

Diese Konfiguration nur Maßnahmen und zeigt 5% des Datenflusses. Wenn wir die Anzahl von Tupeln anerkannt oder nicht durch spezifische Ausguss oder Bolzen zeigen müssen, müssen wir diese Konfiguration ändern:

config.setStatsSampleRate(1.0d); 

als wie:

Config conf = new Config(); 
    conf.setMaxSpoutPending(5000); 
    conf.setStatsSampleRate(1.0d); 

     try { 
      StormSubmitter.submitTopology("topologyOne", conf, myTopology.createTopology()); 
     } catch (AlreadyAliveException e) { 
      e.printStackTrace(); 
     } 

Dann wird der Sturm UI beginnt zählen und zeigen richtig die Zahl acked, die von der Topologie aufgetreten: enter image description here

Schließlich Hier ist eine andere Frage fast wie zu meinem

: Storm latency caused by ack

Verwandte Themen