天天看點

Hive配置Kerberos認證1. 環境說明2. 生成 keytab3. 修改 hive 配置檔案4. 啟動服務5. 測試

關于 kerberos 的安裝和 hdfs 配置 kerberos 認證,請參考 hdfs配置kerberos認證。

關于 kerberos 的安裝和 yarn 配置 kerberos 認證,請參考 yarn配置kerberos認證。

系統環境:

作業系統:centos 6.6

hadoop版本:<code>cdh5.4</code>

jdk版本:<code>1.7.0_71</code>

運作使用者:root

叢集各節點角色規劃為:

cdh1作為master節點,其他節點作為slave節點,hostname 請使用小寫,要不然在內建 kerberos 時會出現一些錯誤。

在 cdh1 節點,即 kdc server 節點上執行下面指令:

拷貝 hive.keytab 檔案到其他節點的 /etc/hive/conf 目錄

并設定權限,分别在 cdh1、cdh2、cdh3 上執行:

由于 keytab 相當于有了永久憑證,不需要提供密碼(如果修改 kdc 中的 principal 的密碼,則該 keytab 就會失效),是以其他使用者如果對該檔案有讀權限,就可以冒充 keytab 中指定的使用者身份通路 hadoop,是以 keytab 檔案需要確定隻對 owner 有讀權限(0400)

修改 hive-site.xml,添加下面配置:

在 core-site.xml 中添加:

記住将修改的上面檔案同步到其他節點:cdh2、cdh3,并再次一一檢查權限是否正确。

hive-metastore 是通過 hive 使用者啟動的,故在 cdh1 上先擷取 hive 使用者的 ticket 再啟動服務:

然後檢視日志,确認是否啟動成功。

hive-server2 是通過 hive 使用者啟動的,故在 cdh2 和 cdh3 上先擷取 hive 使用者的 ticket 再啟動服務:

在沒有配置 kerberos 之前,想要通過 hive 使用者運作 hive 指令需要執行sudo,現在配置了 kerberos 之後,不再需要 <code>sudo</code> 了,hive 會通過 ticket 中的使用者去執行該指令:

運作hive cli:

可以看到在擷取了 hdfs 使用者的 ticket 之後,進入 hive cli 可以執行檢視表、查詢資料等指令。當然,你也可以擷取 hive 的 ticket 之後再來運作 hive 指令。

另外,如果你想通過普通使用者來通路 hive,則需要 kerberos 建立規則和導出 ticket,然後把這個 ticket 拷貝到普通使用者所在的家目錄,在擷取 ticket 了之後,再運作 hive 指令即可。

用戶端通過 jdbc 代碼連結 hive-server2:

beeline 連結 hive-server2: