【问题标题】:Spark Streaming get warn "replicated to only 0 peer(s) instead of 1 peers"Spark Streaming 收到警告“仅复制到 0 个对等点而不是 1 个对等点”
【发布时间】:2015-12-11 13:05:00
【问题描述】:

我使用 spark 流来接收来自 twitter 的 twitts。 我收到很多警告说:

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

【问题讨论】:

    标签: java apache-spark streaming twitter4j spark-streaming


    【解决方案1】:

    当使用 Spark Streaming 读取数据时,由于容错性,传入的数据块至少会复制到另一个节点/worker。否则,如果运行时从流中读取数据然后失败,则可能会丢失此特定数据(它已经从流中读取并擦除,并且由于失败而在工作端也丢失了)。

    参考Spark documentation

    当 Spark Streaming 驱动程序运行时,系统收到 来自各种来源的数据,并将其分成批次。每批 的数据被视为 RDD,即不可变的并行 数据的收集。这些输入 RDD 保存在内存中,并且 复制到两个节点以实现容错。

    您的情况下的警告意味着根本不会复制来自流的传入数据。原因可能是您仅使用一个 Spark 工作器实例运行应用程序或在本地模式下运行。尝试启动更多 Spark 工作人员,看看警告是否消失。

    【讨论】:

    • 有没有办法阻止这些WARN输出到控制台?
    • 要静音更改 log4j.rootCategory=WARN,控制台到 log4j.rootCategory=ERROR,控制台在 log4j.properties 文件中
    • @SaqibAli 这会影响很多我们可能不想压制的消息。更有针对性的解决方案是 log4j.loggr.org.apache.spark.storage=ERROR 。 spark下可能还有其他sub包应该被静音-但最好不要all它们
    • @javadba 可能应该是 log4j.logger.org.apache.spark.storage=ERROR,即 'logger' 而不是 'loggr'。
    • true - 我是手动输入的,而不是复制和粘贴。我无法直接修复评论,所以这里是正确的路径:log4j.logger.org.apache.spark.storage=ERROR
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-02
    • 2011-07-14
    • 2013-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多