美文网首页
sparkstreaming线程数小于2时出错!

sparkstreaming线程数小于2时出错!

作者: 时光如水_fe87 | 来源:发表于2019-04-11 10:47 被阅读0次

运行spark streamig 出错!

当运行一个spark 2.2.0 官方文档的实例时,sparkstreaing 出现如下错误:

2019-04-10 19:40:00 WARN RandomBlockReplicationPolicy:66 - Expecting 1 replicas with only 0 peer/s.

2019-04-10 19:40:00 WARN  BlockManager:66 - Block input-0-1554950400000 replicated to only 0 peer(s) instead of 1 peers

2019-04-10 19:40:00 INFO  BlockGenerator:54 - Pushed block input-0-1554950400000

2019-04-10 19:40:00 INFO  MemoryStore:54 - Block input-0-1554950400200 stored as values in memory (estimated size 7.0 B, free 366.2 MB)

2019-04-10 19:40:00 INFO  BlockManagerInfo:54 - Added input-0-1554950400200 in memory on 172.16.0.84:39028 (size: 7.0 B, free: 366.3 MB)

2019-04-10 19:40:00 WARN  RandomBlockReplicationPolicy:66 - Expecting 1 replicas with only 0 peer/s.

2019-04-10 19:40:00 WARN  BlockManager:66 - Block input-0-1554950400200 replicated to only 0 peer(s) instead of 1 peers

2019-04-10 19:40:00 INFO  BlockGenerator:54 - Pushed block input-0-1554950400200

提交的时候用的 ./bin/spark-submit test.py localhost 9999 , 当然,首先需要运行 Netcat(一个在大多数类 Unix 系统中的小工具)作为我们使用的数据服务器(用来模拟数据流)。

一直出现如上的错误,后来修改了虚拟机的内核为2,问题解决。

继续修改提交方式 ./bin/spark-submit --master local[1] test.py localhost 9999 ,结果又出现如上的错误。

去看官方文档发现了这个严重的问题,sparkstreaming不能少于2个线程,至少要一个接收一个处理:

要记住的几点

当在本地运行一个 Spark Streaming 程序的时候,不要使用 “local” 或者 “local[1]” 作为 master 的 URL。这两种方法中的任何一个都意味着只有一个线程将用于运行本地任务。如果你正在使用一个基于接收器(receiver)的输入离散流(input DStream)(例如,sockets,Kafka,Flume 等),则该单独的线程将用于运行接收器(receiver),而没有留下任何的线程用于处理接收到的数据。因此,在本地运行时,总是用 “local[n]” 作为 master URL,其中的 n > 运行接收器的数量(查看 Spark 属性 来了解怎样去设置 master 的信息)。

将逻辑扩展到集群上去运行,分配给 Spark Streaming 应用程序的内核(core)的内核数必须大于接收器(receiver)的数量。否则系统将接收数据,但是无法处理它。

相关文章

  • sparkstreaming线程数小于2时出错!

    运行spark streamig 出错! 当运行一个spark 2.2.0 官方文档的实例时,sparkstrea...

  • 最容易理解的线程池执行流程

    首先 , 当有任务时 , 看看线程池是否启动 , 启动则判断 线程数是否小于核心线程数 , 小于则执行任务 , 否...

  • 线程池参数配置及执行顺序

    线程池按以下行为执行任务 1. 当线程数小于核心线程数时,创建线程。 2. 当线程数大于等于核心线程数,且...

  • ThreadPoolTaskExecutor小记

    corePoolSize(核心线程数)核心线程会一直存在,即使没有任务执行;当线程数小于核心线程数的时候,即使有空...

  • 线程池核心参数及其使用流程

    1.如果此时线程数小于核心线程数,那么就会新起一个线程来执行当前的任务。2.如果此时线程数大于核心线程数,那么就会...

  • 线程池再探

    线程池源码之execute execute: 总体来说就是: 如果线程的数量小于线程池的核心线程数直接创建线程执行...

  • 线程池

    如果线程数小于corePoolSize则直接创建新线程来处理任务,即使线程中的其他线程是空闲的;如果线程池中的线程...

  • 线程池(1) --线程池的好处以及参数说明

    通过Thread创建线程的弊端 线程池 参数介绍 三个参数的关系: 1.当前运行的线程数小于corePoolSiz...

  • Spakr Streaming

    一、SparkStreaming概述 1.SparkStreaming设计动机 很多重要的应用要处理大量在线流式数...

  • JAVA并发(13)— ThreadPoolExecutor的实

    测试代码 实现原理 用户向线程池提交一个任务(实现Runnable接口)后 若小于核心线程数,那么直接开启一个线程...

网友评论

      本文标题:sparkstreaming线程数小于2时出错!

      本文链接:https://www.haomeiwen.com/subject/ddgziqtx.html