如何在 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
应该有帮助。
我有一个 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
应该有帮助。