Kerberos是一种认证机制,用于hadoop集群安全认证
1、安装
系统环境:centos6.8
集群主机: node1 node2 node3
软件包:
下载地址:http://www.rpmfind.net //自己在这搜索上述包即可
离线安装
在主机node1执行
切记个--nodeps 这个参数,万恶之源,如果有其他服务依赖他会忽略
像krb5-libs这个库,ssh服务就会依赖他,如果你卸载了,再退出会话,会导致ssh不能连接,如果非得加上这个参数,请务必多开几个会话,然后安装新版本。如果ssh不可用了只能服务器本地挂载u盘,再把这个包安装上
安装一个包:# rpm -ivh
升级一个包:# rpm -Uvh
移走一个包:# rpm -e
--replacepkgs 强制重新安装已经安装的软件包
--replacefiles 替换属于其它软件包的文件
--force 忽略软件包及文件的冲突
rpm -qa | grep krb5 #查看自带的krb5的包,有就卸载
rpm -e --nodeps krb5-workstation-1.10.3-57.el6.x86_64 # 卸载
rmp -ivh *.rpm #安装截图的rpm包,上图
# 看过上面红色字体注意,不推荐卸载,直接升级
rmp -Uvh *.rpm ,如果样不行加上替换文件或者替换包的参数
在线安装
yum -y install krb5-server krb5-libs krb5-auth-dialog krb5-workstation
2、配置
修改服务器端配置文件
vim /var/kerberos/krb5kdc/kdc.conf
[kdcdefaults]
kdc_ports = 88
kdc_tcp_ports = 88
[realms]
HADOOP.COM = {
#master_key_type = aes256-cts
max_life= 1d # cdh 要求非0,认证后缓存一天
max_renewable_life= 7d 0h 0m 0s # 最大认证天数
acl_file = /var/kerberos/krb5kdc/kadm5.acl # 权限配置文件
dict_file = /usr/share/dict/words
admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
supported_enctypes = aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal # 加密方式,已经把aes256去掉了
}
修改客户端文件
vim /etc/krb5.conf
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = HADOOP.COM
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
# kdc 服务在node1,admin server数据库在node1
[realms]
HADOOP.COM = {
kdc = node1
admin_server = node1
}
# 暂时忘记了
[domain_realm]
.hadoop.com = HADOOP.COM
hadoop.com = HADOOP.COM
以如下结尾的都是管理员
vim /var/kerberos/krb5kdc/kadm5.acl
# 如下有2列
# 2种
# 1、用户名/(可以理解成组名)@域名 * 代表所有权限
# 2、服务名/主机名@域名
*/admin@HADOOP.COM *
3、启动数据库远程服务和kdc服务
# centos 6 启动
service krb5kdc start
service kadmin start
# 开机自启
chkconfig kadmin on
chkconfig krb5kdc on
# 创建Kerberos数据库,并设置密码
kdb5_util create -r HADOOP.COM -s
# 创建kerberos管理用户
kadmin.local #回车
addprinc admin/admin@HADOOP.COM
4、配置集群客户端
上图包分发到node2和node3
rpm -qa|grep krb5 # 查看是否有旧版本kerberos,有就卸载
rpm -e --nodeps krb5-workstation-1.10.3-57.el6.x86_64
rpm -ivh krb5-libs-1.10.3-65.el6.x86_64.rpm # 安装
rpm -ivh libkadm5-1.10.3-65.el6.x86_64.rpm # 安装
rpm -ivh krb5-workstation-1.10.3-65.el6.x86_64.rpm # 安装
直接升级好了,把 ivh 换成 Uvh
把客户端文件分发到node2和node3
scp /etc/krb5.conf node2:/etc/
scp /etc/krb5.conf node3:/etc/
5、认证
认证方式有2种:密码和密钥文件
1、密码认证
#认证用户
kinit admin/admin@HADOOP.COM
#查看登陆缓存
klist
kinit 可以在任何客户端执行认证,@HADOOP.COM可以不写,因为在配置文件我们配置了默认就是@HADOOP.COM
2、密钥文件认证
kadmin.local
# 生成密钥文件
xst -k /root/krb5.keytab admin/admin@HADOOP.COM
# 指定了密钥文件,就不可以用密码登陆了
kinit -k -t /root/krb5.keytab admin/admin@HADOOP.COM
======也可以这样写======
kadmin.local -q "xst -k /root/krb5.keytab admin/admin@HADOOP.COM"
遇到的问题1:
cloudera manager6.2 开启kerberos遇到的问题
2020-01-14 17:55:35,693 ERROR org.apache.hadoop.mapred.ShuffleHandler: Shuffle error in populating headers :
java.io.IOException: Could not find usercache/hive/appcache/application_1578991874573_0006/output/attempt_1578991874573_0006_m_000000_1/file.out.index in any of the directories
我的这个错的原因是kerberos问题
删除datanode节点上/dta1(每台机器可能有多个,看你的配置)/cdh6/yarn/nm/usercache/下的文件,我的是这个路径,这个nm/usercache/大家是一样的
然后就好了
遇到的问题2:
Application application_1578991874573_0001 failed 2 times due to AM Container for appattempt_1578991874573_0001_000002 exited with exitCode: -1000
Failing this attempt.Diagnostics: [2020-01-14 17:11:14.285]Application application_1578991874573_0001 initialization failed (exitCode=255) with output: main : command provided 0
main : run as user is hive
main : requested yarn user is hive
Can't create directory /dta1/cdh6/yarn/nm/usercache/hive/appcache/application_1578991874573_0001 - Permission denied
Can't create directory /dta2/cdh6/yarn/nm/usercache/hive/appcache/application_1578991874573_0001 - Permission denied
Can't create directory /dta3/cdh6/yarn/nm/usercache/hive/appcache/application_1578991874573_0001 - Permission denied
Can't create directory /dta4/cdh6/yarn/nm/usercache/hive/appcache/application_1578991874573_0001 - Permission denied
Can't create directory /dta5/cdh6/yarn/nm/usercache/hive/appcache/application_1578991874573_0001 - Permission denied
Can't create directory /dta6/cdh6/yarn/nm/usercache/hive/appcache/application_1578991874573_0001 - Permission denied
网上好多说删除usercache下的文件即可,和我的第一个问题解决方式一样,不过我当时比较傻,是先给的权限,后来出了问题一的错误