2016-08-24 117 views
0

我有一個使用Scala的Spark應用程序,它執行一系列轉換,然後將結果寫入parquet文件。完成任務時SQLListener.onTaskEnd上的Spark NullPointerException

轉換部分無問題完成,結果輸出正確寫入HDFS。該應用程序運行在30個節點的YARN集羣之上。

但是,Spark應用程序本身不會完成並退出YARN。它將保留在資源管理器中。

掛了大約一個小時後(消耗資源和核心),然後它完成或拋出一個錯誤並自殺。

這是應用程序的錯誤日誌。感謝任何人都可以在這個問題上提出一些看法。

16/08/24 14:51:12 INFO impl.ContainerManagementProtocolProxy: Opening proxy : phhdpdn013x.company.com:8041 
16/08/24 14:51:22 INFO cluster.YarnClusterSchedulerBackend: Registered executor NettyRpcEndpointRef(null) (phhdpdn013x.company.com:54175) with ID 1 
16/08/24 14:51:22 INFO storage.BlockManagerMasterEndpoint: Registering block manager phhdpdn013x.company.com:24700 with 2.1 GB RAM, BlockManagerId(1, phhdpdn013x.company.com, 24700) 
16/08/24 14:51:29 INFO cluster.YarnClusterSchedulerBackend: SchedulerBackend is ready for scheduling beginning after waiting maxRegisteredResourcesWaitingTime: 30000(ms) 
16/08/24 14:51:29 INFO cluster.YarnClusterScheduler: YarnClusterScheduler.postStartHook done 
16/08/24 15:11:00 ERROR scheduler.LiveListenerBus: Listener SQLListener threw an exception 
java.lang.NullPointerException 
    at org.apache.spark.sql.execution.ui.SQLListener.onTaskEnd(SQLListener.scala:167) 
    at org.apache.spark.scheduler.SparkListenerBus$class.onPostEvent(SparkListenerBus.scala:42) 
    at org.apache.spark.scheduler.LiveListenerBus.onPostEvent(LiveListenerBus.scala:31) 
    at org.apache.spark.scheduler.LiveListenerBus.onPostEvent(LiveListenerBus.scala:31) 
    at org.apache.spark.util.ListenerBus$class.postToAll(ListenerBus.scala:55) 
    at org.apache.spark.util.AsynchronousListenerBus.postToAll(AsynchronousListenerBus.scala:37) 
    at org.apache.spark.util.AsynchronousListenerBus$$anon$1$$anonfun$run$1$$anonfun$apply$mcV$sp$1.apply$mcV$sp(AsynchronousListenerBus.scala:80) 
    at org.apache.spark.util.AsynchronousListenerBus$$anon$1$$anonfun$run$1$$anonfun$apply$mcV$sp$1.apply(AsynchronousListenerBus.scala:65) 
    at org.apache.spark.util.AsynchronousListenerBus$$anon$1$$anonfun$run$1$$anonfun$apply$mcV$sp$1.apply(AsynchronousListenerBus.scala:65) 
    at scala.util.DynamicVariable.withValue(DynamicVariable.scala:57) 
    at org.apache.spark.util.AsynchronousListenerBus$$anon$1$$anonfun$run$1.apply$mcV$sp(AsynchronousListenerBus.scala:64) 
    at org.apache.spark.util.Utils$.tryOrStopSparkContext(Utils.scala:1181) 
    at org.apache.spark.util.AsynchronousListenerBus$$anon$1.run(AsynchronousListenerBus.scala:63) 
16/08/24 15:11:46 ERROR scheduler.LiveListenerBus: Listener SQLListener threw an exception 
java.lang.NullPointerException 

AA

+0

介意分享的代碼?這是可重複的嗎? –

+0

你可以檢查後設置? –

+0

FWIW,在大約65個Yarn主機上運行Spark 1.6,我有一個工作在大約20%的時間內得到這個錯誤。 有時,它的前綴是這樣的: WARN TaskSetManager:在階段0.0(TID 205,AF001932.prod.imvu.com)中丟失的任務43.0:java.io.FileNotFoundException:/ data/1/yarn/local/usercache /jwatte/appcache/application_1492705589019_103715/spark-04076078-cff2-4975-a54a-83db2f658072/fetchFileTemp178.tmp(沒有這樣的文件或目錄) at java.io.FileInputStream.open –

回答

0

什麼是你的星火的版本?
你的錯誤看起來很像這個問題

https://issues.apache.org/jira/browse/SPARK-12339

+0

我不認爲它是一樣的,因爲這錯誤與手動殺死作業有關。 然後再次,這可能實際上只是一個代碼路徑的症狀,從一堆不同的條件調用。 –