我在HDFS上使用检查点写入火花串流应用程序。
有谁知道解决方案?
以前我们使用kinit来指定principal和keytab,并建议通过spark-submit
命令而不是kinit
指定这些,但仍然会出现此错误并导致火花流应用程序关闭。
spark-submit --principal sparkuser@HADOOP.ABC.COM --keytab /home/sparkuser/keytab/sparkuser.keytab --name MyStreamingApp --master yarn-cluster --conf "spark.driver.extraJavaOptions=-XX:+UseConcMarkSweepGC --conf "spark.eventLog.enabled=true" --conf "spark.streaming.backpressure.enabled=true" --conf "spark.streaming.stopGracefullyOnShutdown=true" --conf "spark.executor.extraJavaOptions=-XX:+UseConcMarkSweepGC --class com.abc.DataProcessor myapp.jar
我在日志中看到多次出现以下异常,最后看到杀死执行程序和驱动程序的SIGTERM 15。我们正在使用CDH 5.5.2
2016-10-02 23:59:50错误SparkListenerBus LiveListenerBus:96 - 监听器EventLoggingListener引发了异常 java.lang.reflect.InvocationTargetException at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) 在org.apache.spark.scheduler.EventLoggingListener $$ anonfun $ logEvent $ 3.apply(EventLoggingListener.scala:148) 在org.apache.spark.scheduler.EventLoggingListener $$ anonfun $ logEvent $ 3.apply(EventLoggingListener.scala:148) 在scala.Option.foreach(Option.scala:236) 在org.apache.spark.scheduler.EventLoggingListener.logEvent(EventLoggingListener.scala:148) 在org.apache.spark.scheduler.EventLoggingListener.onUnpersistRDD(EventLoggingListener.scala:184) 在org.apache.spark.scheduler.SparkListenerBus $ class.onPostEvent(SparkListenerBus.scala:50) 在org.apache.spark.scheduler.LiveListenerBus.onPostEvent(LiveListenerBus.scala:31) 在org.apache.spark.scheduler.LiveListenerBus.onPostEvent(LiveListenerBus.scala:31) 在org.apache.spark.util.ListenerBus $ class.postToAll(ListenerBus.scala:56) at org.apache.spark.util.AsynchronousListenerBus.postToAll(AsynchronousListenerBus.scala:37) at org.apache.spark.util.AsynchronousListenerBus $$ anon $ 1 $$ anonfun $ run $ 1.apply $ mcV $ sp(AsynchronousListenerBus.scala:79) 在org.apache.spark.util.Utils $ .tryOrStopSparkContext(Utils.scala:1135) at org.apache.spark.util.AsynchronousListenerBus $$ anon $ 1.run(AsynchronousListenerBus.scala:63) 引起:java.io.IOException:0秒的租约超时已过期。 在org.apache.hadoop.hdfs.DFSOutputStream.abort(DFSOutputStream.java:2370) 在org.apache.hadoop.hdfs.DFSClient.closeAllFilesBeingWritten(DFSClient.java:964) 在org.apache.hadoop.hdfs.DFSClient.renewLease(DFSClient.java:932) 在org.apache.hadoop.hdfs.LeaseRenewer.renew(LeaseRenewer.java:423) 在org.apache.hadoop.hdfs.LeaseRenewer.run(LeaseRenewer.java:448) 在org.apache.hadoop.hdfs.LeaseRenewer.access $ 700(LeaseRenewer.java:71) 在org.apache.hadoop.hdfs.LeaseRenewer $ 1.run(LeaseRenewer.java:304) 在java.lang.Thread.run(Thread.java:745)