Kerberos是一種基於對稱金鑰技術的身份認證協議,可以為其他服務提供身份認證功能。本文為您介紹Hive在開啟Kerberos的情況下,如何訪問Hive Client。
前提條件
已建立叢集,且在软件配置頁面的高级设置地區中,開啟了Kerberos身份认证開關。建立叢集詳情請參見建立叢集。
操作步驟
-
使用SSH方式登入叢集,詳情請參見登入叢集。
-
執行以下命令,進入Kerberos的admin.local工具。
-
如果您是使用root使用者,登入KDC(Kerberos的服務端程式)所在的master-1-1節點,則可以執行以下命令,直接進入admin工具。
kadmin.local當返回資訊中包含如下資訊時,表示已進入admin.local命令列。
Authenticating as principal hadoop/admin@EMR.C-85D4B8D74296****.COM with password. kadmin.local: -
如果您登入的是其他節點或者使用Gateway時,則可以通過填寫admin-user和admin-password進入admin工具。
kadmin -p <admin-user> -w <admin-password>說明如果您使用的是EMR自建的KDC,則參數:
-
<admin-user>:固定值為root/admin。 -
<admin-password>:您可以在E-MapReduce控制台,Kerberos服務的配置頁面,擷取admin_pwd的參數值。
當返回資訊中包含如下資訊時,表示已進入admin命令列。
Authenticating as principal root/admin with password. kadmin: -
-
-
執行以下命令,建立使用者名稱為test的Principal。
本文樣本密碼設定為123456。
addprinc -pw 123456 test當返回資訊中包含如下資訊時,表示建立成功。
Principal "test@EMR.C-85D4B8D74296****.COM" created.說明需要記錄使用者名稱和密碼,在建立TGT(Ticket Granting Ticket)時會用到。
執行
quit命令,可以退出Kerberos的admin.local工具。 -
登入您需要運行Hive Client的機器,執行以下命令,建立並切換至test使用者。
useradd test su test -
執行以下命令,建立TGT。
kinit斷行符號後輸入test使用者的密碼,本文樣本密碼為123456。
-
訪問Hive Client。
-
方式一:直接使用
hive命令訪問Hive Clienthive -
方式二:使用Beeline訪問Hive Client
beeline -u "jdbc:hive2://master-1-1.c-56187feb57f0****.cn-hangzhou.emr.aliyuncs.com:10000/;principal=hive/_HOST@EMR.c-56187feb57f0****.COM"其中,以下資訊需要您按照實際情況替換:
-
master-1-1.c-56187feb57f0****.cn-hangzhou.emr.aliyuncs.com:完整的主機名稱(包括網域名稱)。您可以通過在HiveServer2服務的節點(通常是master-1-1節點)執行hostname -f命令擷取。 -
EMR.c-56187feb57f0****.COM:realm名稱。您可以在EMR控制台Kerberos服務的配置頁簽,搜尋並查看realm參數,參數值即為該realm名稱。
-
-
相關文檔
-
建立Principal的官方文檔,請參見Database administration。
-
建立TGT的官方文檔,請參見Kinit。