天天看点

YARN配置Kerberos认证1. 环境说明2. 生成 keytab3. 修改 YARN 配置文件4. 启动服务5. 测试

系统环境:

操作系统:centos 6.6

hadoop版本:<code>cdh5.4</code>

jdk版本:<code>1.7.0_71</code>

运行用户:root

集群各节点角色规划为:

cdh1作为master节点,其他节点作为slave节点,hostname 请使用小写,要不然在集成 kerberos 时会出现一些错误。

在 cdh1 节点,即 kdc server 节点上执行下面命令:

拷贝 yarn.keytab 和 mapred.keytab 文件到其他节点的 <code>/etc/hadoop/conf</code> 目录

并设置权限,分别在 cdh1、cdh2、cdh3 上执行:

由于 keytab 相当于有了永久凭证,不需要提供密码(如果修改 kdc 中的 principal 的密码,则该 keytab 就会失效),所以其他用户如果对该文件有读权限,就可以冒充 keytab 中指定的用户身份访问 hadoop,所以 keytab 文件需要确保只对 owner 有读权限(<code>0400</code>)

修改 yarn-site.xml,添加下面配置:

如果想要 yarn 开启 ssl,则添加:

修改 mapred-site.xml,添加如下配置:

如果想要 mapreduce jobhistory 开启 ssl,则添加:

在 <code>/etc/hadoop/conf</code> 目录下创建 container-executor.cfg 文件,内容如下:

设置该文件权限:

注意:

<code>container-executor.cfg</code> 文件读写权限需设置为 <code>400</code>,所有者为 <code>root:yarn</code>。

<code>yarn.nodemanager.linux-container-executor.group</code> 要同时配置在 yarn-site.xml 和 container-executor.cfg,且其值需要为运行 nodemanager 的用户所在的组,这里为 yarn。

<code>banned.users</code> 不能为空,默认值为 <code>hfds,yarn,mapred,bin</code>

<code>min.user.id</code> 默认值为 1000,在有些 centos 系统中,用户最小 id 为500,则需要修改该值

确保 <code>yarn.nodemanager.local-dirs</code> 和 <code>yarn.nodemanager.log-dirs</code> 对应的目录权限为 <code>755</code> 。

设置 /usr/lib/hadoop-yarn/bin/container-executor 读写权限为 <code>6050</code> 如下:

测试是否配置正确:

记住将修改的上面文件同步到其他节点:cdh2、cdh3,并再次一一检查权限是否正确。

resourcemanager 是通过 yarn 用户启动的,故在 cdh1 上先获取 yarn 用户的 ticket 再启动服务:

然后查看日志,确认是否启动成功。

resourcemanager 是通过 yarn 用户启动的,故在 cdh2 和 cdh3 上先获取 yarn 用户的 ticket 再启动服务:

resourcemanager 是通过 mapred 用户启动的,故在 cdh1 上先获取 mapred 用户的 ticket 再启动服务:

检查 web 页面是否可以访问:http://cdh1:8088/cluster

运行一个 mapreduce 的例子:

如果没有报错,则说明配置成功。最后运行的结果为:

如果出现下面错误,请检查环境变量中 <code>hadoop_yarn_home</code> 是否设置正确,并和 <code>yarn.application.classpath</code> 中的保持一致。