如何在 Oozie ssh 操作中传播委托令牌

How to propagate delegation token in Oozie ssh action

我有一个 oozie shell 操作执行一堆 hadoop fs -get merge 命令,它目前失败是因为:

[由 GSSException 引起:未提供有效凭据(机制级别:无法找到任何 Kerberos tgt)]

在 oozie 文档中,它说明了如何针对 Java 操作执行此操作:此处

重要提示:为了使 Java 操作在安全集群上成功,它必须像以下代码片段一样传播 Hadoop 委托令牌(这在非安全集群上是良性的):

// 将与委托相关的道具从启动器作业传播到 MR 作业 如果(System.getenv("HADOOP_TOKEN_FILE_LOCATION")!=空){ jobConf.set("mapreduce.job.credentials.binary", System.getenv("HADOOP_TOKEN_FILE_LOCATION")); }

如何为 Shell 执行此操作?当我尝试回显 $HADOOP_TOKEN_FILE_LOCATION 时,它 returns 什么都没有

您可以尝试使用 kinit 命令在 shell 脚本中使用 keytab 进行身份验证

 kinit ${kinit_url} -k -t <keytab>;

Oozie 将 Hadoop 委托令牌复制到 local/current 目录。 export HADOOP_TOKEN_FILE_LOCATION=./container_tokens 应该有帮助。