apache-spark - 如何在 spark yarn 客户端模式下更新 Kerberos 票证?

标签 apache-spark hadoop-yarn kerberos

我使用 Spark 1.6.0 通过 API DataFrame.read.parquet($path) 访问支持 Kerberos 的 HDFS 上的数据。

我的应用程序部署为带有客户端模式的 spark on yarn。 默认情况下,Kerberos 票证每 24 小时过期一次。前 24 小时内一切正常,但 24 小时后(或更长时间,如 27 小时)无法读取文件。

我尝试了几种登录和续订票证的方法,但都不行。

  1. spark-defaults.conf中设置spark.yarn.keytabspark.yarn.principal
  2. spark-submit命令行设置--keytab--principal
  3. 在代码中启动一个计时器,每 2 小时调用一次 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; 

最佳答案

问题解决了。 这是由于 Hadoop lib 版本错误引起的。 在 Spark 1.6 assembly jar 中,它指的是旧版本。 Hadoop lib,所以我再次下载了它,没有内置Hadoop lib,并引用了第三方Hadoop 2.8 lib。 然后它就可以正常工作了。

关于apache-spark - 如何在 spark yarn 客户端模式下更新 Kerberos 票证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43087471/

相关文章:

apache-spark - 如何将 Spark 日志记录标准输出重定向到控制台

scala - Spark中的split()函数有什么作用

java - Spark - 使用参数从 java 调用 Spark jar

security - Ansible,Windows - 如何访问网络文件夹?

kerberos - kerberos 只加密身份验证还是所有客户端通信?

postgresql - 如何在 Spark SQL 中启用 Postgis 查询

hdfs - 如果对文件夹执行 hdfs dfs -rmr 操作,何时从数据节点删除数据?

hadoop - Spark yarn-cluster 模式 - 读取通过 --files 传递的文件

elasticsearch - Kibana 中有缺陷的 token 配置为使用 SPNEGO

python - Spark Python - 如何使用按键归约来获取最小值/最大值