2015-09-15 4 views
8

私はスパークストリーミングを使用してツイッターからツイートを受信します。 多くの警告が表示されます:スパークストリーミングは「1ピアの代わりに0ピアだけに複製する」と警告します。

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

この警告は何ですか?

私のコードがある:ストリーミングスパークとの間でデータを読み出す場合

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(); 

答えて

14

、着信データブロックがあるため、フォールト・トレランスの少なくとも一つの他のノード/作業者に複製されます。これがなければ、ランタイムがストリームからデータを読み込んで失敗すると、この特定のデータが失われてしまいます(すでに読み込まれてストリームから消去され、失敗のためにワーカー側でも失われます)。

Spark documentationを参照:

スパークストリーミングドライバプログラムの実行中、システムは、様々なソースから データを受信し、バッチに分割します。データの各バッチ はRDD、すなわち不変並列データのデータとして扱われます。これらの入力RDDはメモリに保存され、 はフォールトトレランスのために2つのノードに複製されます。

あなたの場合の警告は、ストリームからの受信データがまったく複製されないことを意味します。その理由は、あなたがSparkワーカーのインスタンスを1つだけ使ってアプリケーションを実行したり、ローカルモードで実行している可能性があります。より多くのスパーク作業員を立ち上げ、警告が消えたかどうか確認してください。

+0

これらのWARNがコンソールに出力されないようにする方法はありますか? –

+2

変更をミュートするにはlog4j.rootCategory = WARN、console to log4j.rootCategory = ERROR、console in log4j.properties file –

関連する問題