背景:上周spark任务还能正常运行。突然执行就开始报错?
写了一个spark的功能读取csv然后导入到hive功能,
先看报错FileNotFoundException :这个报错可太简单了吧,不是就是文件文件找不到,啥文件找不到我就复制啥文件不好了么?是哪个文件?怎么好像打印乱码了呢? 先不管。。。。
在接着看
TGT Renewer for hive@CDH.COM] security.UserGroupInformation (UserGroupInformation.java:run(1026)) - Exception encountered while running the renewal command for hive@CDH.COM. (TGT end time:1629455062000, renewalFailures: 0, renewalFailuresTotal: 1
什么kerberos报错了?擦怎么回事,是认证过期?还是登录失败,还是kerberos server还是client有问题?一瞬间大脑开始有了无数个想法
java.io.FileNotFoundException: File file:/data/share/dw_ia_portraitsearch/shell/2021-08-20 15:29:28,848 WARN [TGT Renewer for hive@CDH.COM] security.UserGroupInformation (UserGroupInformation.java:run(1026)) - Exception encountered while running the renewal command for hive@CDH.COM. (TGT end time:1629455062000, renewalFailures: 0, renewalFailuresTotal: 1) does not exist
at org.apache.hadoop.fs.RawLocalFileSystem.deprecatedGetFileStatus(RawLocalFileSystem.java:641)
at org.apache.hadoop.fs.RawLocalFileSystem.getFileLinkStatusInternal(RawLocalFileSystem.java:867)
at org.apache.hadoop.fs.RawLocalFileSystem.getFileStatus(RawLocalFileSystem.java:631)
at org.apache.hadoop.fs.FilterFileSystem.getFileStatus(FilterFileSystem.java:442)
at org.apache.spark.scheduler.EventLoggingListener.start(EventLoggingListener.scala:103)
at org.apache.spark.SparkContext.<init>(SparkContext.scala:533)
at org.apache.spark.SparkContext$.getOrCreate(SparkContext.scala:2549)
at org.apache.spark.sql.SparkSession$Builder$$anonfun$7.apply(SparkSession.scala:944)
at org.apache.spark.sql.SparkSession$Builder$$anonfun$7.apply(SparkSession.scala:935)
at scala.Option.getOrElse(Option.scala:121)
at org.apache.spark.sql.SparkSession$Builder.getOrCreate(SparkSession.scala:935)
at com.tencent.s2.job.Kudu2HiveJob.launch(Kudu2HiveJob.java:51)
at com.tencent.s2.AppJob$1.run(AppJob.java:56)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
立马开始查看 klist 没有过期
[devuser@worker01 /data/share/dw_ia_portraitsearch/shell]$ klist
Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: hive@CDH.COM
Valid starting Expires Service principal
2021-08-24T18:05:39 2021-08-25T18:05:39 krbtgt/CDH.COM@CDH.COM
renew until 2021-08-31T18:05:39
代码里的认证
查看打印日志 也没啥问题?
这就奇了怪了。
仔细看日志里有 [TGT Renewer for hive@CDH.COM]
是续期失败?赶快截图给运维看下,运维说没啥问题啊。
继续看日志
21/08/24 18:05:41 INFO security.UserGroupInformation: Login successful for user hive@CDH.COM using keytab file /data/share/hive.keytab. Keytab auto renewal enabled : false
显示登录成功了啊,按道理应该没问题了 ,怎么回事啊
备注:此时我到了这陷入了kerberos的奇怪问题中,但是FileNotFInd这个问题直接pass了 。。。
继续看..
Warning: Ignoring non-spark config property: hdfs=//s2cluster/user/spark/applicationHistory
Warning: Ignoring non-spark config property: ExitCodeException=exitCode=1: kinit: KDC can't fulfill requested option while renewing credentials
Warning: Ignoring non-spark config property: at=java.lang.Thread.run(Thread.java:748)
启动的时候出现了warning?
而且说没有spark的属性,这些属性都有点奇怪,一般不是spark.xx.xx这样的么,仔细看又出现了
kinit: KDC can't fulfill requested option while renewing credentials
又是kerberos。。。。
自此陷入了kerberos的怪圈,肯定是有问题,思考了一上午,顺带把kerberos的命令又都测了一遍,无果。
百度 https://www.oschina.net/question/4191871_2316093
其实中间我还看了spark的源码。
第一方面 java.io.FileNotFoundException
确实报的文件不存在。
第二方面我还看了报错RawLocalFileSystem
at org.apache.hadoop.fs.RawLocalFileSystem.getFileLinkStatusInternal(RawLocalFileSystem.java:867
为什么是本地文件系统,不应该是hdfs的文件系统么
研究无果。。。其实我一直离真相只差一步。
答案就是问题FileNotFind 这个问题上,这个文件不存在,那就是文件不存在。
java.io.FileNotFoundException: File file:/data/share/dw_ia_portraitsearch/shell/2021-08-20 15:29:28,848 WARN [TGT Renewer for hive@CDH.COM] security.UserGroupInformation (UserGroupInformation.java:run(1026)) - Exception encountered while running the renewal command for hive@CDH.COM. (TGT end time:1629455062000, renewalFailures: 0, renewalFailuresTotal: 1) does not exist
这么一长串就是文件名字!!!!!!!!那么肯定是有人传参有问题,或者配置项有问题
而且 spark都说了Warning: Ignoring non-spark config property: 那就是说加载了spark不能读取的kv对。
所以我怀疑是有人动了cdh配置,反复询问,都说没人动。而且此时运维说flink也能正常跑啊,那就是spark不能跑。
突然灵光一闪,先前百度有人说是配置文件,那么就是这里有问题,看下。spark配置文件是啥呢???
查看文件简直不敢相信 我的眼睛。。。这些东西从哪里来的????
删除即可。唉。。。
总结下这个事情解决思路。
习惯把简单问题复杂化,既然报了这个错,那就是这个错,至于输出乱码不存在的,别人的代码习惯比我们强
报了错 一定要理清思路。。。