hive集成kerberos


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.2beeline測試

當前測試的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.2hive 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引擎

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM