應(yīng)用背景
有時(shí)想看看大數(shù)據(jù)平臺(tái)上Hive表的結(jié)構(gòu)和數(shù)據(jù)字典,或者對(duì)數(shù)據(jù)進(jìn)行簡單查詢燕垃、核驗(yàn),可以裝一個(gè)SQL開發(fā)工具訪問CDH集群中的Hive。
測試環(huán)境:
- CDH版本為5.13.1
- 客戶端OS為Windows 10或Windows 7
配置Kerberos客戶端環(huán)境
在客戶端OS Windows 10或Windows 7上安裝Kerberos客戶端卵牍,在Kerberos官網(wǎng)下載,地址如下沦泌,
https://web.mit.edu/kerberos/dist/index.html
一路點(diǎn)擊Next完成安裝糊昙。
配置C:\ProgramData\MIT\Kerberos5\krb5.ini文件,將KDC Server服務(wù)器上/etc/krb5.conf文件中的部分內(nèi)容谢谦,拷貝到krb5.ini中释牺,如果直接將krb5.conf文件更名為krb5.ini并替換krb5.ini萝衩,會(huì)出現(xiàn)文件格式問題導(dǎo)致MIT Kerberos客戶端無法正常啟動(dòng)。
[libdefaults]
default_realm = MYCDH.COM
dns_lookup_kdc = false
dns_lookup_realm = false
ticket_lifetime = 604800
renew_lifetime = 25920000
forwardable = true
default_tgs_enctypes = des-cbc-crc des3-cbc-sha1
default_tkt_enctypes = des-cbc-crc des3-cbc-sha1
permitted_enctypes = des-cbc-crc des3-cbc-sha1
udp_preference_limit = 1
kdc_timeout = 3000
[realms]
MYCDH.COM = {
kdc = kerberos.mycdh.com
admin_server = kerberos.mycdh.com
}
[domain_realm]
配置環(huán)境變量没咙,krb5.ini以及Kerberos Credential Cache File的路徑猩谊,
- 變量名:KRB5_CONFIG,變量值:C:\ProgramData\MIT\Kerberos5\krb5.ini祭刚。
- 變量名:KRB5CCNAME预柒,變量值:C:\temp\krb5cache。
KRB5CCNAME的路徑默認(rèn)是不存在的袁梗,因此需要在C盤下創(chuàng)建temp文件夾宜鸯,krb5cache文件則不需要?jiǎng)?chuàng)建。
配置完環(huán)境變量后遮怜,重啟計(jì)算機(jī)使其生效淋袖。
使用keytab文件登錄Kerberos
在KDC Server上創(chuàng)建一個(gè)keytab文件,
sudo kadmin.local
kadmin.local: addprinc padluo@MYCDH.COM
WARNING: no policy specified for padluo@MYCDH.COM; defaulting to no policy
Enter password for principal "padluo@MYCDH.COM":
Re-enter password for principal "padluo@MYCDH.COM":
Principal "padluo@MYCDH.COM" created.
kadmin.local: xst -norandkey -k padluo.keytab padluo@MYCDH.COM
Entry for principal padluo@MYCDH.COM with kvno 1, encryption type aes256-cts-hmac-sha1-96 added to keytab WRFILE:padluo.keytab.
Entry for principal padluo@MYCDH.COM with kvno 1, encryption type aes128-cts-hmac-sha1-96 added to keytab WRFILE:padluo.keytab.
Entry for principal padluo@MYCDH.COM with kvno 1, encryption type des3-cbc-sha1 added to keytab WRFILE:padluo.keytab.
Entry for principal padluo@MYCDH.COM with kvno 1, encryption type arcfour-hmac added to keytab WRFILE:padluo.keytab.
Entry for principal padluo@MYCDH.COM with kvno 1, encryption type des-hmac-sha1 added to keytab WRFILE:padluo.keytab.
Entry for principal padluo@MYCDH.COM with kvno 1, encryption type des-cbc-md5 added to keytab WRFILE:padluo.keytab.
在生成keytab文件時(shí)需要加參數(shù)-norandkey
锯梁,否則會(huì)導(dǎo)致即碗,直接使用kinit padluo@MYCDH.COM
初始化時(shí)會(huì)提示密碼錯(cuò)誤。
測試padluo.keytab文件陌凳,
kdestroy
sudo chmod 644 padluo.keytab
ll padluo.keytab
kinit -kt padluo.keytab padluo@MYCDH.COM
klist
在非root用戶下需要將生成的keytab文件剥懒,權(quán)限設(shè)置到644以上,否則會(huì)初始化失敗kinit: ???? while getting initial credentials
或者使用sudo權(quán)限初始化合敦。
將生成的padluo.keytab文件拷貝到Windows 10/7上初橘,在CMD命令進(jìn)行初始化,
kdestroy
kinit -kt C:\padluo.keytab padluo@MYCDH.COM
klist
初始化成功充岛,在MIT Kerberos客戶端顯示保檐,
DBeaver安裝配置
DBeaver安裝包下載地址如下,安裝為界面化操作崔梗,下一步下一步完成安裝即可夜只。
因?yàn)镈Beaver通過JDBC的方式訪問Hive,底層也是基于Java環(huán)境蒜魄,所以這里需要在DBeaver的配置中增加JVM的參數(shù)扔亥,添加關(guān)于Kerberos相關(guān)的配置。進(jìn)入DBeaver的安裝目錄谈为,找到dbeaver.ini配置文件旅挤,在配置文件末尾增加如下配置,重新啟動(dòng)DBeaver客戶端峦阁。
-Djavax.security.auth.useSubjectCredsOnly=false
-Djava.security.krb5.conf="C:\ProgramData\MIT\Kerberos5\krb5.ini"
-Dsun.security.krb5.debug=true
基于Cloudera驅(qū)動(dòng)創(chuàng)建連接
在Cloudera官網(wǎng)下載Hive JDBC驅(qū)動(dòng)包谦铃,Cloudera官網(wǎng)提供的JDBC驅(qū)動(dòng)包比較簡單只有一個(gè)jar包耘成,Hive JDBC驅(qū)動(dòng)包及其依賴包均打包在里面榔昔,但在JDBC URL的訪問方式上也做了一定的調(diào)整驹闰。地址如下,
https://www.cloudera.com/downloads/connectors/hive/jdbc/2-6-5.html
將下載的Hive JDBC Driver驅(qū)動(dòng)包解壓到本地目錄撒会,將ClouderaHiveJDBC41-2.6.2.1002解壓得到HiveJDBC41.jar驅(qū)動(dòng)包嘹朗,該驅(qū)動(dòng)包包含了HiveJDBC驅(qū)動(dòng)的依賴包。
在DBeaver中進(jìn)入驅(qū)動(dòng)設(shè)置界面诵肛,在URL模板中增加如下參數(shù):
;AuthMech=1;KrbRealm=MYCDH.COM;KrbHostFQDN={host};KrbServiceName=hive;KrbAuthType=2
AuthMech: 0無認(rèn)證屹培、1Kerberos認(rèn)證、2用戶名方式怔檩、3用戶名和密碼認(rèn)證褪秀、6使用Hadoop授權(quán)認(rèn)證
KrbRealm:你的KDC服務(wù)定義的域名
krbHostFQDN:你的HiveServer2服務(wù)的FQDN(hostname或你dns解析的域名)
KrbServiceName:HiveServer2服務(wù)的Principal默認(rèn)為hive
KrbAuthType:0表示獲取你的Subject來實(shí)現(xiàn)Kerberos認(rèn)證、1表示基于JAAS方式獲取Kerberos認(rèn)證薛训、2表示基于當(dāng)前客戶端的Tick Cache方式認(rèn)證
添加Cloudera提供的Hive JDBC驅(qū)動(dòng)媒吗,驅(qū)動(dòng)類需要指定為"com.cloudera.hive.jdbc41.HS2Driver"。
點(diǎn)擊確定完成驅(qū)動(dòng)設(shè)置乙埃,填寫替換{host}變量的主機(jī)地址闸英,
點(diǎn)擊測試連接,
完成連接創(chuàng)建后即可正常訪問Kerberos環(huán)境下的Hive庫介袜。
基于Hive原生驅(qū)動(dòng)創(chuàng)建連接
基于Hive原生驅(qū)動(dòng)創(chuàng)建連接的方式暫未進(jìn)行測試甫何。
最后,推薦極客時(shí)間新出的一個(gè)【大規(guī)模數(shù)據(jù)處理實(shí)戰(zhàn)】的專欄遇伞,了解Google一線工程師的大數(shù)據(jù)架構(gòu)實(shí)戰(zhàn)經(jīng)驗(yàn)辙喂,深入掌握實(shí)用的大規(guī)模數(shù)據(jù)處理技術(shù)。
微信公眾號(hào)「padluo」鸠珠,分享數(shù)據(jù)科學(xué)家的自我修養(yǎng)加派,既然遇見,不如一起成長跳芳。
讀者交流電報(bào)群
知識(shí)星球交流群