天天看点

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

关于 kerberos 的安装和 hdfs 配置 kerberos 认证,请参考 hdfs配置kerberos认证。

关于 kerberos 的安装和 yarn 配置 kerberos 认证,请参考 yarn配置kerberos认证。

系统环境:

操作系统:centos 6.6

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

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

运行用户:root

集群各节点角色规划为:

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

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

拷贝 hive.keytab 文件到其他节点的 /etc/hive/conf 目录

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

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

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

在 core-site.xml 中添加:

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

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

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

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

在没有配置 kerberos 之前,想要通过 hive 用户运行 hive 命令需要执行sudo,现在配置了 kerberos 之后,不再需要 <code>sudo</code> 了,hive 会通过 ticket 中的用户去执行该命令:

运行hive cli:

可以看到在获取了 hdfs 用户的 ticket 之后,进入 hive cli 可以执行查看表、查询数据等命令。当然,你也可以获取 hive 的 ticket 之后再来运行 hive 命令。

另外,如果你想通过普通用户来访问 hive,则需要 kerberos 创建规则和导出 ticket,然后把这个 ticket 拷贝到普通用户所在的家目录,在获取 ticket 了之后,再运行 hive 命令即可。

客户端通过 jdbc 代码连结 hive-server2:

beeline 连结 hive-server2: