文档首页/
    
      
      MapReduce服务 MRS/
      
      
        
        
        用户指南(吉隆坡区域)/
        
        
        MRS集群组件操作指导/
        
        
        使用Spark2x/
        
        
        Spark2x常见问题/
        
        
        Spark Core/
        
      
      Spark应用执行过程中,日志中一直打印getApplicationReport异常且应用较长时间不退出
    
  
  
    
        更新时间:2023-03-17 GMT+08:00
        
          
          
        
      
      
      
      
      
      
      
      
  
      
      
      
        
Spark应用执行过程中,日志中一直打印getApplicationReport异常且应用较长时间不退出
问题
Spark应用执行过程中,当driver连接RM失败时,会报下面的错误,且较长时间不退出。
16/04/23 15:31:44 INFO RetryInvocationHandler: Exception while invoking getApplicationReport of class ApplicationClientProtocolPBClientImpl over 37 after 1 fail over attempts. Trying to fail over after sleeping for 44160ms. java.net.ConnectException: Call From vm1/192.168.39.30 to vm1:8032 failed on connection exception: java.net.ConnectException: Connection refused; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused
回答
在Spark中有个定期线程,通过连接RM监听AM的状态。由于连接RM超时,就会报上面的错误,且一直重试。RM中对重试次数有限制,默认是30次,每次间隔默认为30秒左右,每次重试时都会报上面的错误。超过次数后,driver才会退出。
RM中关于重试相关的配置项如表1所示。
| 
        参数  | 
      
        描述  | 
      
        默认值  | 
     
|---|---|---|
| 
        yarn.resourcemanager.connect.max-wait.ms  | 
      
        连接RM的等待时间最大值。  | 
      
        900000  | 
     
| 
        yarn.resourcemanager.connect.retry-interval.ms  | 
      
        重试连接RM的时间频率。  | 
      
        30000  | 
     
重试次数=yarn.resourcemanager.connect.max-wait.ms/yarn.resourcemanager.connect.retry-interval.ms,即重试次数=连接RM的等待时间最大值/重试连接RM的时间频率。
在Spark客户端机器中,通过修改“conf/yarn-site.xml”文件,添加并配置“yarn.resourcemanager.connect.max-wait.ms”和“yarn.resourcemanager.connect.retry-interval.ms”,这样可以更改重试次数,Spark应用可以提早退出。
   父主题: Spark Core