日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hive 集成oracle,hive集成kerberos问题1

發布時間:2024/9/30 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hive 集成oracle,hive集成kerberos问题1 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在hdfs+mapred+impala+kerberos運行正常后,開始測試hive+kerberos。hive0.11之后開始支持kerberos的驗證,hive主要有兩種訪問方式,一種方法是shell運行,即直接運行hive命令,另一種方法時啟動hiveserver,然后通過jdbc或odbc進行驗證,其中第二種方法可以通過hive0.11的beeline進行測試。

在使用hive shell運行時,主要遇到下面幾個問題:

1.權限驗證問題。

在hive操作hdfs數據的時候,權限是分為兩層的,一個是hive層面的權限控制,主要是控制表的權限,一個是hdfs文件的權限控制,控制用戶的讀寫操作。

表的相關權限主要是寫在hive的元數據庫中,主要是TBL_PRIVS表(控制表的權限)和DB_PRIVS 表(控制庫的權限)。

在開啟kerberos之后,傳入hive的用戶名是principal的全名,比如hdfs/gxxxx@KERBEROS_HADOOP,而hive權限表中的PRINCIPAL_NAME 字段是hdfs,會導致沒有表的權限,雖然可以通過update表來更改相應的PRINCIPAL_NAME 的值,但是實際使用中缺乏可運維性。在hdfs層面,有一個user mapping的功能(由hadoop.security.auth_to_local參數控制),默認會把principal的全名進行map,轉換為unix的用戶名形式。

2.hook的問題。

由于hive有grant的bug,因此線上使用了hook來做用戶驗證,即執行grant語法是會判斷當前用戶是否是hdfs用戶,如果不是則報錯,主要的代碼如下(老畢提供):

其中獲取當前傳入的用戶名是通過 SessionState.get().getAuthenticator().getUserName();

集成了kerberos之后,在實際使用中會報

FAILED: SemanticException User:hdfs/xxxxx@KERBEROS_HADOOP isn't ADMIN, please ask for hdfs.的錯誤。

這兩個問題的解決,借鑒了點評的patch:

即把ql/src/java/org/apache/hadoop/hive/ql/security/HadoopDefaultAuthenticator.java

中的this.userName = ugi.getUserName();改為

this.userName = ShimLoader.getHadoopShims().getShortUserName(ugi);

本文轉自菜菜光 51CTO博客,原文鏈接:http://blog.51cto.com/caiguangguang/1381334,如需轉載請自行聯系原作者

總結

以上是生活随笔為你收集整理的hive 集成oracle,hive集成kerberos问题1的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。