Hadoop集群集成kerberos

上周周会领导让研究kerberos,要在我们的大集群中使用,研究任务指派给了我。这周的话也是用测试集群大概的做了一遍。目前为止的研究还比较粗糙,网上众多资料都是CDH的集群,而我们的集群是不是用的CDH,所以在集成kerberos的过程中有一些不同之处。

测试环境是由5台机器搭建的集群,hadoop版本是2.7.2。5台机器host分别是
rm1、rm2、test-nn1、test-nn2、10-140-60-50。选取rm1为kdc服务器。

1、安装软件
rm1上安装krb5、krb5-server和krb5-client
命令行执行 : yum install krb5-server krb5-libs krb5-auth-dialog krb5-workstation -y
其它4台机器安装krb5-level、krb5-workstation
4台机器命令行分别执行 : yum install krb5-devel krb5-workstation -y

2、配置文件修改
kdc服务器涉及到的配置文件有3个
/etc/krb5.conf 、/var/kerberos/krb5kdc/kdc.conf 、/var/kerberos/krb5kdc/kadm5.acl
krb5.conf文件内容如下:
这里写图片描述

其中的ticket_lifetime和renew_lifetime是比较重要的参数,这两个参数都是时间参数,前者表示的是访问凭证的有效时间,默认是24小时,这里我已经做了修改,修改成了10000天。因为有效期过期后,再在节点上执行hadoop fs -ls类似的命令都会失效,凭证默认存放在/tmp下,文件格式为krb5cc_xxx(xxx是用户代码,即/etc/passwd中用户对应的代码)。如何修改下文会介绍。
另外可以修改的就是[libdefaults]中的default_realm参数,图中为EXAMPLE.COM,这里可以任意命名字符串,大写,以.COM结尾。[realms]中的参数也需要对应修改,前面介绍了我选择的是rm1作为kdc服务器。
配置完后将该文件分发到其它所有节点的/etc下。

kdc.conf文件内容如下:
这里写图片描述
这里还是配置了max_life和max_renewlife参数的值为10000天,其它都是默认值。

kadm5.acl文件可以不做改动。

集群每个节点安装JCE,需要安装与当前java版本相同的JCE。我使用的是java1.7的,下载链接如下:
http://www.oracle.com/technetwork/java/embedded/embedded-se/downloads/jce-7-download-432124.html
下载完后得到的压缩包解压,将其中的local_policy.jar以及US_export_policy.jar复制到JAVA_HOME/jre/lib/security下。

3、创建数据库
软件安装完毕后,需要在rm1上运行初始化数据库命令,命令行执行:
kdb5_util create -r JAVACHEN.COM -s。这里要根据krb5.conf中default-realm中对应的值。运行完毕后在/var/kerberos/krb5kdc/下生成principal数据库。

4、启动服务
在rm1命令行上执行:
service krb5kdc start
service kadmin start

5、创建principals
在rm1命令行上键入kadmin.local后,而后键入

addprinc -randkey hadoop/rm1@EXAMPLE.COM(我这里配置文件中的是EXAMPLE.COM)
addprinc -randkey hadoop/rm2@EXAMPLE.COM
addprinc -randkey hadoop/test-nn1@EXAMPLE.COM
addprinc -randkey hadoop/test-nn2@EXAMPLE.COM
addprinc -randkey hadoop/10-140-60-50@EXAMPLE.COM
addprinc -randkey HTTP/rm1@EXAMPLE.COM
addprinc -randkey HTTP/rm2@EXAMPLE.COM
addprinc -randkey HTTP/test-nn1@EXAMPLE.COM
addprinc -randkey HTTP/test-nn2@EXAMPLE.COM
addprinc -randkey HTTP/10-140-60-50@EXAMPLE.COM

因为集群所有的服务都是以hadoop用户启动的,所以仅需要创建hadoop的principals。CDH集群则需要hdfs、yarn、mapred3个用户

6、创建keytab文件
rm1命令行执行:

kadmin.local -q "xst  -k hadoop.keytab  hadoop/rm1@EXAMPLE.COM"
kadmin.local -q "xst  -k hadoop.keytab  hadoop/rm2@EXAMPLE.COM"
kadmin.local -q "xst  -k hadoop.keytab  hadoop/test-nn1@EXAMPLE.COM"
kadmin.local -q "xst  -k hadoop.keytab  hadoop/test-nn2@EXAMPLE.COM"
kadmin.local -q "xst  -k hadoop.keytab  hadoop/10-140-60-50@EXAMPLE.COM"
kadmin.local -q "xst  -k HTTP.keytab  HTTP/rm1@EXAMPLE.COM"
kadmin.local -q "xst  -k HTTP.keytab  HTTP/rm2@EXAMPLE.COM"
kadmin.local -q "xst  -k HTTP.keytab  HTTP/test-nn1@EXAMPLE.COM"
kadmin.local -q "xst  -k HTTP.keytab  HTTP/test-nn2@EXAMPLE.COM"
kadmin.local -q "xst  -k HTTP.keytab  HTTP/10-140-60-50@EXAMPLE.COM"

这样会在/var/kerberos/krb5kdc目录下生成hadoop.keytab和HTTP.keytab文件。
继续rm1命令行键入 ktutil
继而键入 rkt hadoop.keytab 回车
再次键入 rkt HTTP.keyt

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值