文档首页/
    
      
      MapReduce服务 MRS/
      
      
        
        
        组件操作指南(阿布扎比区域)/
        
        
        使用Spark2x/
        
        
        Spark2x常见问题/
        
        
        Spark Streaming/
        
      
      Spark Streaming任务一直阻塞
    
  
  
    
        更新时间:2024-07-19 GMT+08:00
        
          
          
        
      
      
      
      
      
      
      
      
  
      
      
      
        
Spark Streaming任务一直阻塞
问题
运行一个Spark Streaming任务,确认有数据输入后,发现没有任何处理的结果。打开Web界面查看Spark Job执行情况,发现如下图所示:有两个Job一直在等待运行,但一直无法成功运行。
继续查看已经完成的Job,发现也只有两个,说明Spark Streaming都没有触发数据计算的任务(Spark Streaming默认有两个尝试运行的Job,就是图中两个)
   图2 Completed Jobs
   
  
 
  回答
经过定位发现,导致这个问题的原因是:Spark Streaming的计算核数少于Receiver的个数,导致部分Receiver启动以后,系统已经没有资源去运行计算任务,导致第一个任务一直在等待,后续任务一直在排队。从现象上看,就是如问题中的图1中所示,会有两个任务一直在等待。
因此,当Web出现两个任务一直在等待的情况,首先检查Spark的核数是否大于Receiver的个数。
 
   Receiver在Spark Streaming中是一个常驻的Spark Job,Receiver对于Spark是一个普通的任务,但它的生命周期和Spark Streaming任务相同,并且占用一个核的计算资源。
在调试和测试等经常使用默认配置的场景下,要时刻注意核数与Receiver个数的关系。
   父主题: Spark Streaming
  
 
    
      