Configuration config = new Configuration();
config.set("hadoop.security.authentication", "Kerberos");
UserGroupInformation.setConfiguration(config);
UserGroupInformation ugi = null;
ugi = UserGroupInformation.loginUserFromKeytabAndReturnUGI("me@EXAMPLE>COM","me.keytab");
model = ugi.doAs((PrivilegedExceptionAction<Map<String,Object>>) () -> {
testHadoop(hcb.gethDFSConfigBean());
return null;
});
请看下面的堆栈跟踪
java.io.IOException: Failed on local exception: java.io.IOException: java.lang.IllegalArgumentException: Failed to specify server's Kerberos principal name; Host Details : local host is: "Securonix-int3.local/10.0.4.36"; destination host is: "sobd189.securonix.com":8020;
at org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:772)
at org.apache.hadoop.ipc.Client.call(Client.java:1472)
at org.apache.hadoop.ipc.Client.call(Client.java:1399)
at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:232)
at com.sun.proxy.$Proxy9.getFileInfo(Unknown Source)
at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.getFileInfo(ClientNamenodeProtocolTranslatorPB.java:752)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:187)
at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:102)
at com.sun.proxy.$Proxy10.getFileInfo(Unknown Source)
at org.apache.hadoop.hdfs.DFSClient.getFileInfo(DFSClient.java:1988)
at org.apache.hadoop.hdfs.DistributedFileSystem$18.doCall(DistributedFileSystem.java:1118)
at org.apache.hadoop.hdfs.DistributedFileSystem$18.doCall(DistributedFileSystem.java:1114)
at org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)
at org.apache.hadoop.hdfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:1114)
at org.apache.hadoop.fs.FileSystem.exists(FileSystem.java:1400)
at com.securonix.application.ui.uiUtil.SnyperUIUtil.lambda$main$4(SnyperUIUtil.java:1226)
at com.securonix.application.ui.uiUtil.SnyperUIUtil$$Lambda$6/1620890840.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1628)
at com.securonix.application.ui.uiUtil.SnyperUIUtil.main(SnyperUIUtil.java:1216)
Caused by: java.io.IOException: java.lang.IllegalArgumentException: Failed to specify server's Kerberos principal name
at org.apache.hadoop.ipc.Client$Connection$1.run(Client.java:680)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1628)
at org.apache.hadoop.ipc.Client$Connection.handleSaslConnectionFailure(Client.java:643)
at org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:730)
at org.apache.hadoop.ipc.Client$Connection.access$2800(Client.java:368)
at org.apache.hadoop.ipc.Client.getConnection(Client.java:1521)
at org.apache.hadoop.ipc.Client.call(Client.java:1438)
... 23 more
Caused by: java.lang.IllegalArgumentException: Failed to specify server's Kerberos principal name
at org.apache.hadoop.security.SaslRpcClient.getServerPrincipal(SaslRpcClient.java:322)
at org.apache.hadoop.security.SaslRpcClient.createSaslClient(SaslRpcClient.java:231)
at org.apache.hadoop.security.SaslRpcClient.selectSaslClient(SaslRpcClient.java:159)
at org.apache.hadoop.security.SaslRpcClient.saslConnect(SaslRpcClient.java:396)
at org.apache.hadoop.ipc.Client$Connection.setupSaslConnection(Client.java:553)
at org.apache.hadoop.ipc.Client$Connection.access$1800(Client.java:368)
at org.apache.hadoop.ipc.Client$Connection$2.run(Client.java:722)
at org.apache.hadoop.ipc.Client$Connection$2.run(Client.java:718)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1628)
at org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:717)
在启用了Kerberos的调试代码之后,当我调用filesystem.get()时,我得到了下面的调试日志;Kerberor调试日志:
Java配置名称:null Java配置名称:null Native config名称:/etc/krb5.conf Native config名称:/etc/krb5.conf从Native config加载从Native config加载16/02/22 15:53:14 WARN Util.NativEcodeLoader:无法为您的平台加载Native Hadoop库...在适用的情况下使用builtin-java类
Java配置名称:null Java配置名称:null Native config名称:/etc/krb5.conf Native config名称:/etc/krb5.conf Loaded from Native config Loaded from Native config
>>>KinitOptions cache name is /tmp/krb5cc_501
>> Acquire default native Credentials
default etypes for default_tkt_enctypes: 18 18 16.
>>> Found no TGT's in LSA
我认为问题在于HDFS希望配置具有dfs.datanode.kerberos.principal的值,该值是datanodes的主体,但在本例中缺少该值。
当我只从core-site.xml创建配置实例而忘记添加hdfs-site.xml时,我也遇到了同样的问题。我一添加hdfs-site.xml,它就开始工作了,hdfs-site.xml有:
<property>
<name>dfs.datanode.kerberos.principal</name>
<value>....</value>
</property>
希望这能有所帮助。
当我尝试用kerberos5通过apache2进行身份验证时,我得到了一个错误。 我使用mod_auth_kerb 当我查看apache日志时,我可以看到我的主体被修改了,在结尾添加:0.16.172.in-addr.arpa@。所以kerberos用 未能验证krb5凭据:在Kerberos数据库中找不到服务器 [2015年4月15日16:12:50.539355][authz_core:deb
我试图使用java包装器将RunDeck server作为windows服务运行,本文将指导您:http://www.phwitservices.com/2014/06/rundeck-windows-service
我正在使用mongoDB和NodeJS后端。问题是我得到了以下错误 Node: 16)UnHandledPromiseRejessWarning: MongoNetworkError:首次连接时连接到服务器[localhost:27017]失败[MongoNetworkError:连接ECONNREFUSED127.0.0.1:27017] 这是我的码头作曲 我也尝试过使用,但不起作用。 在后端,
我们有4个mongoDB服务器,其中第一个服务器目前是主服务器,有3个副本。如果我在连接字符串中指定所有4个服务器,它根本无法连接,但如果我只指定第一个服务器,它连接良好。这是不好的,因为如果第一个服务器失败,它将无法连接。 工作原理:mongoDb://login:password@server1:27017/admin?readpreference=primary
我刚刚开始使用rabbitmq,我目前正在rabbitmq网站上的教程中工作。我使用本地机器作为服务器完成了hello world教程。现在我想连接到另一台机器上的远程服务器。我的问题是我需要使用什么主机名来连接到这个服务器。它是安装rabbitmq服务器的机器的ip地址吗。