我已经设置了单节点集群,并且kdc服务器以及客户端在同一台计算机上。我尝试了所有可能的选项,但仍然存在相同的错误。 从我所做的调查中得出的结论如下。 1)在$ JAVA_HOME/jre/lib/security文件夹中安装了JCE jar。 2)我编辑了krb5.conf文件以仅使用aes256-cts加密。Hadoop Kerberos安全
的/etc/krb5.conf看起来像下面,
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
dns_lookup_realm = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = false
default_realm = EXAMPLE.COM
default_ccache_name = KEYRING:persistent:%{uid}
default_tkt_enctypes = aes256-cts
default_tgs_enctypes = aes256-cts
permitted_enctypes = aes256-cts
[realms]
EXAMPLE.COM = {
kdc = localhost
admin_server = localhost
}
[domain_realm]
localhost = EXAMPLE.COM
/var/kerberos/krb5kdc/kdc.conf看起来像下面
[kdcdefaults]
kdc_ports = 88
kdc_tcp_ports = 88
[realms]
EXAMPLE.COM = {
#master_key_type = aes256-cts
acl_file = /var/kerberos/krb5kdc/kadm5.acl
dict_file = /usr/share/dict/words
admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
supported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal camellia256-cts:normal camellia128-cts:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
max_life = 24h 0m 0s
max_renewable_life = 7d 0h 0m 0s
}
的NameNode和DataNode会启动与在keytab文件中提供的凭证。在namenode和datanode启动后,我创建了一个已经是hadoop组中的unix用户的主体,即使用addprinc命令的'hdfs'。然后我用kinit命令(kinit hadoop),这是成功的。 klist -e命令结果显示,按预期方式,enc类型为aes-256。但是,当我尝试一个hadoop fs -ls /命令我得到下面的错误。
Java的配置名称:空
本地配置名称:/etc/krb5.conf中
从本地配置
KinitOptions加载的高速缓存名称为/ tmp/krb5cc_1001 15/06/26十三点20分18秒WARN IPC .Client:连接到服务器时遇到异常:javax.security.sasl.SaslException:GSS启动失败[由GSSException引起:未提供有效凭据(机制级别:未能找到任何Kerberos tgt)]
ls:本地失败异常:java.io.IOException:javax.security.sasl.SaslException:GSS启动失败[由GSSException引起:没有提供有效的凭据(机制级别:未能找到任何Kerberos tgt)];主机详细信息:本地主机是:“/”;目的地主机是:“”:9000;
请帮忙。
它似乎的Hadoop是指车票从java的默认缓存位置开始,但您可能使用kinit在其他位置创建了票证。 – Kumar
非常感谢。更改票证缓存位置工作。 :) –
我会更新这个答案。很高兴你解决了你的问题。 – Kumar