我有一个oozie shell动作执行一堆hadoop fs -get merge命令,它当前失败的原因是:
[由GSSException引起:未提供有效凭据(机制级别:无法找到任何Kerberos tgt)]
在oozie文档中,它说如何为Java操作执行此操作:此处
重要信息:为了使Java操作在安全集群上成功,它必须传播Hadoop委派令牌,如下面的代码片段所示(这在非安全集群上是良性的):
//将与启动器作业相关的委托相关道具传播到MR作业 if(System.getenv(“HADOOP_TOKEN_FILE_LOCATION”)!= null){ jobConf.set(“mapreduce.job.credentials.binary”,System.getenv(“HADOOP_TOKEN_FILE_LOCATION”)); }
我如何为壳牌做这件事?当我尝试回显$ HADOOP_TOKEN_FILE_LOCATION时,它不返回任何内容
答案 0 :(得分:0)
您是否可以尝试使用kinit命令在shell脚本中使用keytab进行身份验证
kinit ${kinit_url} -k -t <keytab>;
答案 1 :(得分:0)
Oozie将Hadoop委托令牌复制到本地/当前目录。 export HADOOP_TOKEN_FILE_LOCATION=./container_tokens
应该有所帮助。