我为Windows设置了kerberos
,使用hadoop-2.6.0
设置了kerberos
。
提交作业或执行任何用户命令时,Hadoop会从默认位置 c:\ users \ username \ krb5cc_username 引用Kerberos票证缓存。
我想在运行时更改此位置。是否可以更改java的默认属性以从系统中的某个位置引用票证缓存位置。
更新
可以使用以下命令
更改默认位置kinit -c cache_name username
但是当我在hadoop上执行任何操作时,它仅对用户信息采用默认票证缓存位置。如何将默认位置更改为用户特定的缓存位置?
非常感谢帮助。
答案 0 :(得分:3)
我刚刚通过设置以下环境变量来解决问题,
set KRB5CCNAME=ticketlocation
设置上述变量使Hadoop从指定位置获取票证。
答案 1 :(得分:0)
首先,你可以。但你应该问问自己为什么?
打开PrintWriter
,构建您的login.conf
,在代码中设置JAAS conf文件属性,然后再完成。
以下是示例代码:
PrintWriter writer = new PrintWriter(new FileOutputSteam("..."));
writer.println("client {");
writer.println("com.sun.security.auth.module.Krb5LoginModule required doNotPrompt=true useTicketCache=true");
writer.print("ticketCache=\"");
writer.print(path);
writer.println("\";");
writer.println("};");
System.setProperty("java.security.auth.login.config", ...);
现在应该这样做并使用JAAS来获取缓存的内存呈现。