簡體   English   中英

當使用beeline連接到啟用了Kerberos的EMR群集上的Hive時,為什么要使用Hive服務主體?

[英]Why do we use the Hive service principal when using beeline to connect to Hive on a Kerberos enabled EMR cluster?

我正在嘗試使用EMR集群(啟用Kerberos)上的beeline連接到Hive,想知道為什么我要運行kinit(使用我的用戶帳戶),然后執行以下操作:

beeline -u "jdbc:hive2://localhost:10000/default;principal=hive/_HOST@REALM"

使我感到困惑的部分是上面的原理。 當我在上一個命令中使用kinit對用戶帳戶進行身份驗證時,為什么我們使用“ principal = hive / _HOST @ REALM”(從我的閱讀中是Hive服務主體)?

我將針對Hive服務主體還是我的用戶帳戶運行查詢? 使用Beeline時是否所有用戶都使用Hive服務主體? 這背后有什么原因嗎?

鏈接以獲取更多上下文: 使用Kerberos keytab通過Beeline連接到Hive

該JDBC URL上的principal=選項實際上是指服務主體 (SPN),即您需要連接的主體 公認的模棱兩可和令人困惑。

kinit您的用戶主體 (UPN)進行身份驗證,創建一個“票據授予票據”(TGT),該票據將被轉儲到票據緩存中。
稍后,JDBC客戶端(或HTTP客戶端,或Hive Metastore Java客戶端,或HDFS Java客戶端,無論如何)將使用TGT為適當主機上的適當服務類型請求服務票證 出於某種原因,Java從未將服務票證放入緩存中(不同於curl或Python,后者使用C庫,例如kinit )。

SPN通常在名為***-site.xml Hadoop配置文件中定義,這些文件由Hadoop客戶端庫使用。
但是... JDBC驅動程序應該是獨立的,不依賴於外部庫或配置文件,並且可以從URL獲取其所有連接參數。 這就是為什么您必須在URL上顯式填充SPN的原因。 咄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM