我正在测试使用ToolRunner运行的第一个Job。要运行它,我定义了一个krb5.ini文件在Windows上,是这样的:无法为hadoop指定kerberos的配置位置
[realms]
EXAMPLE.COM = {
kdc = kerberos.example.com
admin_server = localhost
dns_lookup_kdc = false
}
我把它放在C:\Windows\
于是,我试图说明它的位置我这些代码的方法:
- 增加对主代码的
java.security.krb5.config=C:\Windows\krb5.ini
- 参数添加的
krb5.ini
地址到我的项目的已知库 - 使用以下命令定义OS(Windows 7)的环境变量:
KRB5_CONFIG = C:\Windows\krb5.ini
尽管this page已告知“您可以通过设置环境变量KRB5_CONFIG来覆盖默认位置。可以在KRB5_CONFIG中指定多个冒号分隔的文件名;这是目前所有文件将被改为“ - 与System.setProperty指定krb5.ini的位置,因为这样:
System.setProperty("java.security.krb5.conf", "C:\\Windows\\krb5.ini");
System.setProperty("sun.security.krb5.realm", "C:\\Windows\\krb5.ini");
的这些方式非没有解决这个错误我“M获得:
Exception in thread "main" java.lang.IllegalArgumentException: Can't get Kerberos realm
at org.apache.hadoop.security.HadoopKerberosName.setConfiguration(HadoopKerberosName.java:65) at org.apache.hadoop.security.HadoopKerberosName.setConfiguration(HadoopKerberosName.java:65)
at org.apache.hadoop.security.UserGroupInformation.initialize(UserGroupInformation.java:275)
at org.apache.hadoop.security.UserGroupInformation.ensureInitialized(UserGroupInformation.java:260)
at org.apache.hadoop.security.UserGroupInformation.loginUserFromSubject(UserGroupInformation.java:790)
at org.apache.hadoop.security.UserGroupInformation.getLoginUser(UserGroupInformation.java:760)
at org.apache.hadoop.security.UserGroupInformation.getCurrentUser(UserGroupInformation.java:633)
at org.apache.hadoop.fs.FileSystem$Cache$Key.<init>(FileSystem.java:2812)
at org.apache.hadoop.fs.FileSystem$Cache$Key.<init>(FileSystem.java:2802)
at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2668)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:371)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:170)
at org.enahang.mapreduce.utils.mrUtils.Test.run(Test.java:125)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.enahang.mapreduce.utils.mrUtils.Test.main(Test.java:62)
我的环境是NetBeans和尝试这些方法,我大约知道,这些方式不工作之前,我常常可以通过添加适当的罐子FIL解决这些问题。 e作为外部库。有任何想法吗?或提示?
在此先感谢
好主意。但它不适合我。我认为java已经汇总了所有包含它的定义的配置文件,我已经将它们添加到我的代码中,因此它降低了我的命令的优先级。但是,因为这是我的第一个测试,我删除了'hadoop-auth'来让我的代码运行 –