https://my.oschina.net/epoch/blog/1634325
启用Kerberos认证
• 安装Kerberos
• 安装配置master KDC/Kerberos Server
注:Kerberos Server可以是任意一台Hadoop集群网络相同的主机
1、安装KDC所需软件krb5-server、krb5-workstation
yum install krb5-libs krb5-server krb5-workstation
通过命令查看安装列表rpm -qa|grep krb5
2、软件安装完成后,首先配置/etc/krb5.conf文件。
[libdefaults]
default_realm = EXAMPLE.COM #此处需要进行配置,把默认的EXAMPLE.COM修改为自己要定义的值
[realms]
EXAMPLE.COM ={
kdc = kerberos.example.com #此处配置的为主机名
admin_server = kerberos.example.com #同上
}
3、配置/var/kerveros/krb5kdc/kdc.conf文件
注意:
[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 des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
}
此处为EXAMPLE.COM与/etc/krb5.conf中的配置保持一致。
4、创建Kerberos数据库
此步可能用时较长,创建完成会在/var/kerberos/krb5kdc/下面生成一系列文件。并且会提示输入数据库管理员的密码。
kdb5_util create -r EXAMPLE.COM -s
其他操作:
删除Kerberos数据库,若重建数据库会先删除/var/kerberos/krb5kdc下面principal相关文件:
kdb5_util -r EXAMPLE.COM destroy
5、创建管理员并输入密码【admin】。kadmin.local可以直接运行在KDC上,而无需通过Kerberos认证。
/usr/sbin/kadmin.local -q "addprinc admin/admin"【admin】
给数据库管理员添加ACL权限,修改kadm5.acl文件,*代表全部权限
cat /var/kerberos/krb5kdc/kadm5.acl
6、设置kerberos服务为开机启动,关闭防火墙
chkconfig krb5kdc on
chkconfig kadmin on
chkconfig iptables off
7、启动krb5kdc和kadmind进程
/usr/sbin/kadmind
/usr/sbin/krb5kdc
或
service krb5kdc start
service kadmin start
service krb5kdc status
8、检查Kerberos正常运行
kinit admin/admin
9、使用admin登陆Kerberos
kinit admin/admin@EXAMPLE.COM【初始化证书】
klist 【查看当前证书】
10、使用kadmin.local工具,创建用户,并使用命令listprincs查看用户是否已经创建成功。
11、使用管理员为用户创建keytab认证文件
kadmin下执行
addprinc -randkey test@EXAMPLE.COM
xst -k service.keytab test
默认生成目录为/tmp/
查看keytab文件
klist –k -t /etc/security/service.keytab
直接执行
ktadd -k /root/wangjy.keytab -norandkey wangjy@HADOOP.COM
此keytab文件相当于该用户的长期密钥,可用于在任意主机上进行账号认证。
12、使用管理员删除用户
kadmin下执行
delprinc -force wangjy@HADOOP.COM
• 安装idap客户端
yum install openldap-clients
• 安装Kerberos Client
集群中的其他主机安装Kerberos Client:
yum install krb5-libs krb5-server krb5-workstation
• 开启Hadoop环境的Kerberos认证
注:以下步骤仅仅针对CDH5.5.X版本的Hadoop
• 基础环境
1.配置好KDC及其域
2.在Cloudera Manager Server主机安装openldap-clients
3.在Hadoop集群其他节点安装krb5-workstation, krb5-libs
4.KDC所在主机/var/kerberos/krb5kdc/kdc.conf添加如下配置信息
max_life = 1d
max_renewable_life = 7d
kdc_tcp_ports = 88
5.如果开启了YARN-HA,需要清空Zookeeper中的相关状态:
停止YARN,格式化State Store。可通过Cloudera Manager页面进行操作。
• 安装步骤
1.启用条件:
设置正在运行的 KDC。Cloudera Manager 支持 MIT KDC 和 Active Directory。
KDC 应配置为拥有非零票证生存期和可更新的生存期。如果票证不可更新,则 CDH 不能正常工作。
如果想使用 Active Directory,OpenLdap 客户端库应安装在 Cloudera Manager Server 主机中。另外,Kerberos 客户端库应安装在所有主机中。
以上条件全部确认后,勾选是的,并进入下一步。
2.KDC信息
3.KRB5配置
是否部署krb5.conf到集群中每个节点
4.导入KDC账户管理票证
5.配置HDFS Datanode端口
6.启动成功
• 可能发生的错误
1、Communication failure with server while initializing kadmin interface
原因:
为管理服务器指定的主机(也称为主 KDC)没有运行 kadmind 守护进程。
解决方法:
请确保为主 KDC 指定正确的主机名。如果指定了正确的主机名,请确保 kadmind 正在指定的主 KDC 上运行。
• 关闭Kerberos认证
• 关闭步骤
1.修改hdfs配置core-site.xml
hadoop.security.authentication -> Simple
hadoop.security.authorization -> false
dfs.datanode.address -> from 1004 (for Kerberos) to 50010 (default)
dfs.datanode.http.address -> from 1006 (for Kerberos) to 50075 (default)
2.hbase配置
hbase.security.authentication -> simple
hbase.security.authorization -> false
3.zookeeper配置
enableSecurity-> false
4.Hue配置
删除Kerberos Ticket Renewer实例
• 可能发生的错误
datanodes无法启动
异常信息:
java.io.IOException: Failed on local exception: java.net.SocketException: Permission denied; Host Details : local host is: "xxxxx"; destination host is: (unknown)
解决方法:
将datanode的dfs.datanode.address恢复为50010,dfs.datanode.http.address恢复为50075。
Yarn中namenode都是standby状态
• 开发机器连接Kerberos
• Windows
1. 配置环境变量:USERDNSDOMAIN=HADOOP.COM
2. 修改mapred.properties
#kerberos认证配置
hadoop.security.authentication=kerberos
#kerberos.file.path=/etc/krb5.conf
kerberos.file.path=E:/etc/security/keytab/krb5.conf
hdfs.user=hdfs
#mapreduce认证用户
dfs.client.kerberos.principal=hebei@HADOOP.COM
dfs.client.keytab.file=/etc/security/keytab/hebei.keytab
#hive认证用户
hive.dfs.client.kerberos.principal=hiveuser/secsight-nn01@HADOOP.COM
hive.dfs.client.keytab.file=E:/etc/security/keytab/hiveuser.keytab
FAQ
• 取消权限控制
Hadoop文件系统(HDFS)是有权限控制,与Linux权限类似,如果是测试环境找到dfs.permissions,取消此项中的勾选
注:生产环境必须使用有权限控制的HDFS
• 文件备份修改
Hadoop文件系统(HDFS)默认是将数据备份三份,以保证Hadoop的可靠性,如果是测试环境或硬盘容量较小的话,可以找到dfs.replication配置,修改备份数(此数字是大于0的整数)
注:生产环境必须使用三份以上的备份,视数据及硬盘容量而定
• Hadoop文件系统(HDFS)空间不足,增加空间
Hadoop文件系统(HDFS)中空间不足,会导致MR、Hive等程序出错,需要对Hadoop集群中每台设备增加存储,操作系统挂载新存储后要对Hadoop中某些组件配置进行修改。
在CM管理页面(主节点7180端口),点击HDFS进入HDFS页面后,点击配置:
搜索dfs.datanode.data.dir配置项,点击“+”,增加新的存储目录/newdisk1/dfs/dn
搜索hadoop.log.dir配置项,将原目录修改为新的存储目录/newdisk1/var/log/hadoop-mapreduce
在CM管理页面(主节点7180端口),点击YARN进入YARN页面后,点击配置,依次搜索下面配置项,并修改为新的存储目录:
配置项:yarn.nodemanager.local-dirs 存储目录:/newdisk1/yarn/nm
配置项:yarn.nodemanager.log-dirs 存储目录:/newdisk1/var/log/hadoop-yarn/container
配置项:hadoop.log.dir 存储目录:/newdisk1/var/log/hadoop-yarn
配置项:hadoop.log.dir 存储目录:/newdisk1/var/log/hadoop-yarn
• 在安装过程中出错,或者中断,想从头再来安装的,可执行下面的一些操作:
master节点:关闭server、agent
/opt/cm-5.5.0/etc/init.d/cloudera-scm-server stop
/opt/cm-5.5.0/etc/init.d/cloudera-scm-agent stop
rm -rf /opt/cloudera/parcel-cache
rm -rf /opt/cloudera/parcel-parcels
清除数据库:
drop database scm;
重建数据库:
CREATE DATABASE scm OWNER scm ENCODING 'UTF8';
slave节点:关闭agent
/opt/cm-5.5.0/etc/init.d/cloudera-scm-agent stop
rm -rf /opt/coudera
重启服务:
master节点:开启server、agent
/opt/cm-5.5.0/etc/init.d/cloudera-scm-server start
/opt/cm-5.5.0/etc/init.d/cloudera-scm-agent start
slave节点:开启agent
/opt/cm-5.5.0/etc/init.d/cloudera-scm-agent start