2015-09-15 7 views
8

Ich benutze Spark-Streaming, um Twitts von Twitter zu erhalten. ich viele Warnung erhalten, die sagt:Spark Streaming erhalten warn "repliziert auf nur 0 Peer (s) anstelle von 1 Peers"

replicated to only 0 peer(s) instead of 1 peers 

was diese Warnung für ist?

mein Code ist:

SparkConf conf = new SparkConf().setAppName("Test"); 
    JavaStreamingContext sc = new JavaStreamingContext(conf, Durations.seconds(5)); 
    sc.checkpoint("/home/arman/Desktop/checkpoint"); 

    ConfigurationBuilder cb = new ConfigurationBuilder(); 
    cb.setOAuthConsumerKey("****************") 
     .setOAuthConsumerSecret("**************") 
     .setOAuthAccessToken("*********************") 
     .setOAuthAccessTokenSecret("***************"); 


    JavaReceiverInputDStream<twitter4j.Status> statuses = TwitterUtils.createStream(sc, 
      AuthorizationFactory.getInstance(cb.build())); 

    JavaPairDStream<String, Long> hashtags = statuses.flatMapToPair(new GetHashtags()); 
    JavaPairDStream<String, Long> hashtagsCount = hashtags.updateStateByKey(new UpdateReduce()); 
    hashtagsCount.foreachRDD(new saveText(args[0], true)); 

    sc.start(); 
    sc.awaitTerminationOrTimeout(Long.parseLong(args[1])); 
    sc.stop(); 

Antwort

14

Wenn Daten mit Funken Lesen Streaming werden eingehende Datenblocks repliziert zu mindestens einem anderen Knoten/Arbeiter wegen der Fehlertoleranz. Ohne dass es passieren kann, dass im Falle, dass die Laufzeit Daten aus dem Datenstrom liest und dann fehlschlägt, dieses bestimmte Datenstück verloren geht (es wird bereits aus dem Datenstrom gelesen und gelöscht und es geht auch auf der Arbeiterseite verloren).

zum Spark documentation Bezug:

Während ein Funken Streaming-Treiber-Programm ausgeführt wird, empfängt das System Daten aus verschiedenen Quellen und und teilt sie in den Reihen. Jede Charge von Daten wird als eine RDD behandelt, dh eine unveränderliche parallele Sammlung von Daten. Diese Eingangs-RDDs werden im Speicher gespeichert und für Fehlertoleranz auf zwei Knoten repliziert.

Die Warnung in Ihrem Fall bedeutet, dass eingehende Daten aus dem Stream überhaupt nicht repliziert werden. Der Grund dafür könnte sein, dass Sie die App mit nur einer Instanz von Spark Worker oder im lokalen Modus ausführen. Versuchen Sie, mehr Funkenarbeiter zu starten und sehen Sie, ob die Warnung weg ist.

+0

Gibt es eine Möglichkeit zu verhindern, dass diese WARN auf der Konsole ausgegeben wird? –

+2

Um die Änderung zu ändern, log4j.rootCategory = WARN, logge an log4j.rootCategory = ERROR, Konsole in der Datei log4j.properties –