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

时间:2015-04-16 14:32:51

标签: hadoop cloudera oozie

我有一个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时,它不返回任何内容

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

Oozie将Hadoop委托令牌复制到本地/当前目录。 export HADOOP_TOKEN_FILE_LOCATION=./container_tokens应该有所帮助。