我使用Spark 1.6.0
来访问API DataFrame.read.parquet($path)
启用Kerberos的HDFS上的数据。
我的应用程序在客户端模式下部署为纱线上的火花。 默认情况下,Kerberos票证每24小时到期一次。一切都在前24小时内正常工作,但在24小时后(或更长时间,如27小时)未能读取文件。
我已经尝试了几种登录和续订机票的方法,但是没有用。
spark.yarn.keytab
spark.yarn.principal
和spark-defaults.conf
--keytab
命令行--principal
和spark-submit
UserGroupInformation.getLoginUser().checkTGTAndReloginFromKeytab()
。错误详情为:
WARN [org.apache.hadoop.ipc.Client$Connection$1.run(Client.java:671)] - Couldn't setup connection for adam/cluster1@DEV.COM to cdh01/192.168.1.51:8032
DEBUG [org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1632)] - PrivilegedActionException as:adam/cluster1@DEV.COM (auth:KERBEROS) cause:java.io.IOException: Couldn't setup connection for adam/cluster1@DEV.COMto cdh01/192.168.1.51:8032
ERROR [org.apache.spark.Logging$class.logError(Logging.scala:95)] - Failed to contact YARN for application application_1490607689611_0002.
java.io.IOException: Failed on local exception: java.io.IOException: Couldn't setup connection for adam/cluster1@DEV.COM to cdh01/192.168.1.51:8032; Host Details : local host is: "cdh05/192.168.1.41"; destination host is: "cdh01":8032;
答案 0 :(得分:1)
问题解决了。 它是由错误版本的Hadoop lib引起的。 在Spark 1.6程序集jar中,它引用了旧版本。 Hadoop lib,所以我在没有内置Hadoop lib的情况下再次下载它,并引用了第三方Hadop 2.8 lib。 然后就行了。