1、票据的生成

kdc服务器操作,生成用于hive身份验证的principal

1.1、创建principal

# kadmin.local -q “addprinc -randkey hive/yjt”

1.2、创建秘钥文件

# kadmin.local -q “xst  -norankey  -k  /etc/hive.keytab hive/yjt”

拷贝秘钥文件到集群,root操作或者有root权限的普通用户操作

# scp /etc/hive.keytab 192.168.0.230:/data1/hadoop/hive/conf

连接到集群,修改文件权限

# chown hduser:hadoop /data1/hadoop/hive/conf/hive.keytab

# chomd 400 /data1/hadoop/hive/conf/hive.keytab

1.3、修改配置文件

Hive-site.xml配置文件添加如下信息:

<property>
  <name>hive.server2.authentication</name>
  <value>KERBEROS</value>
</property>
 
<property>
  <name>hive.server2.authentication.kerberos.principal</name>
  <value>hive/_HOST@HADOOP.COM</value>
</property>
 
<property>
  <name>hive.server2.authentication.kerberos.keytab</name>
  <value>/data1/hadoop/hive/conf/hive.keytab</value>
</property>
 
<property>
  <name>hive.metastore.sasl.enabled</name>
  <value>true</value>
</property>
 
<property>
  <name>hive.metastore.kerberos.keytab.file</name>
  <value>/data1/hadoop/hive/conf/hive.keytab</value>
</property>
 
<property>
  <name>hive.metastore.kerberos.principal</name>
  <value>hive/_HOST@HADOOP.COM</value>
</property>

2、集群内部测试

2.1、获取票据

# kinit -kt /data1/hadoop/hive/conf/hive.keytab hive/yjt

获取到票据以后,使用klist查看获取的票据是否正确。

 

hive2集成kerberos hive配置kerberos_hadoop

 

 

2.2、beeline测试

当前测试的hive版本是2.1.0,这个版本集成的hadoop版本是2.5.x,所以需要更换lib库下的hadoop版本或者下载一个高版本

这里拷贝hbase/lib库下的hadoop版本到hive,拷贝之前先删除hve/lib库下的有关hadoop版本的jar包,如下:

# cp /data1/hadoop/hbase/lib/hadoop-*.jar /data1/hadoop/hive/lib
使用beeline连接
# beeline
beeline> !connect jdbc:hive2://yjt:10000/;principal=hive/yjt@HADOOP.HOME -n hduser
0: jdbc:hive2://yjt:10000/> show tables;
+------------+--+
|  tab_name  |
+------------+--+
| user_info  |
+------------+--+
1 row selected (2.363 seconds)
0: jdbc:hive2://yjt:10000/>

 

2.2、hive shell测试

(1)、测试mr引擎

默认就是mr引擎,所以不用修改说明配置

hive> select count(*) from user_info;

如果成功,说明配置ok

(2) 、测试tez引擎

切换引擎:

hive> set hive.execution.engine=tez;

 

hive2集成kerberos hive配置kerberos_hive_02

 

 

3、客户端测试

3.1、安装hive

这里我们直接从集群内部拷一份hive配置到客户端

3.2、获取认证用户

# kinit -kt /data1/hadoop/hive/conf/hive.keytab   hive/yjt

 

hive2集成kerberos hive配置kerberos_hadoop_03

 

 

3.3、测试beeline

#beeline

beeline> !connect jdbc:hive2://yjt:10000/;principal=hive/yjt@HADOOP.HOME -n hduser

0: jdbc:hive2://yjt:10000/> show tables;

 

hive2集成kerberos hive配置kerberos_hadoop/hive_04

 

 

3.4、测试hive shell

(1)、mr引擎

select count(*) from user_info;

(2)、tez引擎

从集群拷贝tez软件目录到客户端

#scp -r /data1/hadoop/tez 192.168.0.9:/data1/hadoop

hive> set hive.execution.engine=tez;

hive> select count(*) from user_info;

 

注:上述在客户端的测试全部都是使用hduser用户,这个用户与集群内部启动集群进程的用户是一样的,接下来在客户端使用其他的用户测试。

3.5 测试其他用户

客户端创建yujt用户

# useradd yjt

# echo ‘123456’ |passwd --stdin ‘yujt’

修改hive.keytab权限(在一开始设置的权限为400)

# chmod 404 /data1/hadoop/hive/conf/hive.keytab

#su - yujt

获取认证用户

$ kinit -kt /data1/hadoop/hive/conf/hive.keytab hive/yjt

$hive shell

hive> select count(*) from user_info;  

如果配置正确,上述任务执行状态ok

 

切换到tez引擎

 

hive2集成kerberos hive配置kerberos_hive2集成kerberos_05

 

记录学习和生活的酸甜苦辣.....哈哈哈