Spark Inactivity - Spark驱动程序在几分钟后停止使用TCP流读取数据

时间:2018-02-05 06:02:45

标签: apache-spark spark-streaming hadoop-streaming

我遇到了一个奇怪的问题,并尝试使用自定义接收器。

问题 - Spark Driver / Executor在5分钟的Activity之后停止在stdout中接收和显示数据。如果我们继续将数据写入另一端的服务器套接字,它将继续工作。 驱动程序或执行程序日志中未报告任何错误。 代码段

SparkConf sparkConf = new SparkConf().setMaster("spark://10.0.0.5:7077").setAppName("SmartAudioAnalytics")
            .set("spark.executor.memory", "1g").set("spark.cores.max", "5").set("spark.driver.cores", "2")
            .set("spark.driver.memory", "2g");
    JavaStreamingContext ssc = new JavaStreamingContext(sparkConf, new Duration(3000));

    JavaDStream<String> JsonReq1 = ssc.socketTextStream("myip", 9997, StorageLevels.MEMORY_AND_DISK_SER);
    JavaDStream<String> JsonReq2 = ssc.socketTextStream("myIP", 9997, StorageLevels.MEMORY_AND_DISK_SER);
    ArrayList<JavaDStream<String>> streamList = new ArrayList<JavaDStream<String>>();
    streamList.add(JsonReq1);
    JavaDStream<String> UnionStream = ssc.union(JsonReq2, streamList);

    UnionStream.foreachRDD(new VoidFunction<JavaRDD<String>>() {

        private static final long serialVersionUID = 1L;
        int total = 0;

        @Override
        public void call(JavaRDD<String> rdd) throws Exception {

            long count = rdd.count();
            total += count;
            System.out.println(total);
            rdd.foreach(new VoidFunction<String>() {

                private static final long serialVersionUID = 1L;

                @Override
                public void call(String s) throws Exception {
                    System.out.println(s);
                }

            });
        }
    });
    System.out.println(UnionStream.count());
    ssc.start();
    ssc.awaitTermination();

我已经打开了Spark UI,发现所有线程都在24小时后正常工作。请参阅图片enter image description here enter image description here

0 个答案:

没有答案