CDH安装之篇四:启用Kerberos认证

启用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/[email protected]【初始化证书】

klist         【查看当前证书】

10、使用kadmin.local工具,创建用户,并使用命令listprincs查看用户是否已经创建成功。

11、使用管理员为用户创建keytab认证文件

kadmin下执行

addprinc -randkey [email protected]

xst -k service.keytab test

默认生成目录为/tmp/

查看keytab文件

klist –k -t /etc/security/service.keytab

直接执行

ktadd -k /root/wangjy.keytab -norandkey [email protected]

此keytab文件相当于该用户的长期密钥,可用于在任意主机上进行账号认证。

12、使用管理员删除用户

kadmin下执行

delprinc -force [email protected]

•          安装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认证用户

[email protected]

dfs.client.keytab.file=/etc/security/keytab/hebei.keytab

#hive认证用户

hive.dfs.client.kerberos.principal=hiveuser/[email protected]

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节点:关闭serveragent

   /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

猜你喜欢

转载自my.oschina.net/epoch/blog/1634325
今日推荐