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查看獲取的票據是否正確。
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;
3、客戶端測試
3.1、安裝hive
這里我們直接從集群內部拷一份hive配置到客戶端
3.2、獲取認證用戶
# kinit -kt /data1/hadoop/hive/conf/hive.keytab hive/yjt
3.3、測試beeline
#beeline
beeline> !connect jdbc:hive2://yjt:10000/;principal=hive/yjt@HADOOP.HOME -n hduser
0: jdbc:hive2://yjt:10000/> show tables;
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引擎