本文實操環境是hadoop的cdh5.7版本,hive的認證方式是kerberos,kerberos的認證方式是基於客戶機的,所以步驟可以分為兩步:
1、dbeaver所在的機器完成kerberos認證
2、debaver通過jdbc連接hive
kerberos認證通過后在有效期之內,該機器都可以連接hive,但是要注意,機器重啟后,認證可能會失效,過期或者失效之后重新執行認證命令即可。
一、kerberos認證
1、安裝kerberos客戶端
客戶端下載地址如下:
https://web.mit.edu/kerberos/dist/index.html
下載完后點擊安裝即可。
2、cdh的認證文件准備
向cdh管理員索取krb5.keytab跟krb5.conf文件以及hive的用戶名,krb5.conf文件默認路徑為:/etc/krb5.conf
然后把krb5.conf文件的內容拷貝新建到文檔krb5.ini,因為windows識別不到conf類型的配置文件。以下是我的krb5.ini的文件內容,我把它放到D:\krb5文件夾下:
3、配置環境變量
變量名:KRB5_CONFIG,變量值:D:\krb5\krb5.ini
變量名:KRB5CCNAME,變量值:C:\temp\krb5cache
KRB5CCNAME為認證成功后生成的認證緩存文件存放路徑及文件名,要確保C:\temp路徑存在,krb5cache是認證成功后自動生成的。
4、進行認證
按住菜單鍵+R,輸入cmd,打開dos操作界面
進入kerberos客戶端的安裝目錄下的bin文件夾
我安裝客戶端使用的是默認安裝路徑,所以輸入以下命令:
cd C:\Program Files\MIT\Kerberos\bin
然后根據krb5.keytab進行認證,命令格式如下:
kinit -kt krb5.keytab 用戶名
需要注意如果krb5.keytab並不在當前目錄C:\Program Files\MIT\Kerberos\bin,則需要補充路徑,認證完畢之后,可以執行命令klist查看認證有效期以及生成的緩存文檔。
至此kerberos認證完畢。
二、dbeaver客戶端配置
1、配置hosts文件
添加cdh各服務器的ip跟域名
2、創建hive連接
編輯驅動設置,上傳hive的驅動包,注意一定要跟服務器端的版本一直,不然會出現報錯
添加完之后點擊找到類,選擇正確的驅動
編輯URL模板,在后面加上內容“;principal=hive/{host}@EXAMPLE.COM”,注意{host}可以直接填寫hiveserver2所在服務器的hostname代替,如:“;principal=hive/cdh1@EXAMPLE.COM”;@后面的內容是根據krb5.ini里面的default_realm值來填寫。
修改完之后點擊確定保存,返回上層填寫jdbc的連接信息,
如果在url模板中直接的內容為“;principal=hive/{host}@EXAMPLE.COM”,那么主機只能填寫hive服務器的hostname,如果填寫內容為“;principal=hive/cdh1@EXAMPLE.COM”,那么主機名可以使用hive服務器的hostname也可以使用hive服務器的ip,填寫數據庫名稱以及用戶名后點擊確定保存設置,然后在左側點擊連接數據庫:
P.S.
1、jdbc鏈接的編寫方式其實是由hive的配置文件hive-site.xml決定的,如圖:
把value中的_HOST替換成hive的hostname即為連接模板。
2、在dbeaver創建hive的連接過程中,如果一旦出錯,最好刪除該鏈接重新創建,不然會出現很多虛假問題。