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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Hive用户权限管理理解

發布時間:2025/4/16 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hive用户权限管理理解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

HiverServer2支持遠程多客戶端的并發和認證,支持通過JDBC、Beeline等連接操作。hive默認的Derby數據庫,由于是內嵌的文件數據庫,只支持一個用戶的操作訪問,支持多用戶需用mysql保存元數據。現在關心的是HiveServer如何基于mysql元數據庫管理用戶權限,其安全控制體系與Linux及Hadoop的用戶是否存在聯系。

1)remote方式部署Hive

Hive中metastore(元數據存儲)的三種方式:內嵌Derby方式、基于mysql的Local方式、基于mysql的Remote方式。顯然多用戶并發模式是采用remote方式部署,Hiveserver元數據放置在mysql數據庫并在mysql建立用戶,HiveClient遠程連接。回顧下remote方式部署Hive:

第一步:元數據庫mysql創建用戶名和數據庫;

第二步:HiveServer在 hive-site.xml 文件中配置jdbc URL、驅動、用戶名、密碼等屬性;

<property>

?<name>javax.jdo.option.ConnectionURL</name>

? <value>jdbc:mysql://mysql server IP/hive_meta?createDatabaseIfNotExist=true</value>

? <description>JDBC connect string for aJDBC metastore</description>

</property>

<property>

?<name>javax.jdo.option.ConnectionDriverName</name>

?<value>com.mysql.jdbc.Driver</value>

? <description>Driver class name for aJDBC metastore</description>

</property>

<property>

?<name>javax.jdo.option.ConnectionUserName</name>

? <value>hive</value>

? <description>username to use againstmetastore database</description>

</property>

<property>

? <name>javax.jdo.option.ConnectionPassword</name>

? <value>hive</value>

? <description>password to use againstmetastore database</description>

</property>

<property>

?<name>hive.metastore.warehouse.dir</name>

? <!-- base hdfs path -->

?<value>/user/hive/warehouse</value>

? <description>base hdfs path :locationof default database for the warehouse</description>

</property>

第三步:HiveClient在hive-site.xml 文件中配置thrift(負責client和server的通信)和存儲路徑;

<!--thrift://<host_name>:<port> 默認端口是9083 -->

<property>

? <name>hive.metastore.uris</name>

? <value>thrift://Hiveserver IP:9083</value>

? <description>Thrift uri for the remotemetastore. Used by metastore client to connect to remotemetastore.</description>

</property>

<!--? hive表的默認存儲路徑 -->

<property>

? <name>hive.metastore.warehouse.dir</name>

?<value>/user/hive/warehouse</value>

? <description>location of defaultdatabase for the warehouse</description>

</property>

<?property?>

???<?name?>hive.metastore.local</?name?>

???<?value?>false</?value>

</?property?>

第四步:HiveServer啟動metastore監聽

執行命令:hive--service metastore -p <port_num>?//默認端口是9083

第五步:HiveClient執行hive命令。

上述5步,下圖是很清晰的展現。


2)msyql元數據字典表

從remote方式部署的Hive看,還未體現出多用戶管理及其權限控制,需進一步深入研究下圖四個模塊的關系。


Hive早期版本是通過Linux的用戶和用戶組來控制用戶權限,無法對Hive表的CREATE、SELECT、DROP等操作進行控制。現Hive基于元數據庫來管理多用戶并控制權限。數據分為元數據和數據文件兩部分,元數據存儲在mysql,而數據文件則是HDFS,控制元數據即控制可訪問的數據文件。

Hive在mysql上的元數據表主要分為:Database相關、Table相關、數據存儲相關SDS、COLUMN相關、SERDE相關(序列化)、Partition相關(分區)、SKEW相關(數據傾斜)、BUCKET相關(分桶)、PRIVS相關(權限管理),對數據庫-數據表、用戶有相應關系體現。其中TBL_PRIVS存儲了表/視圖的授權信息,見如下數據字典:

元數據表字段

說明

示例數據

TBL_GRANT_ID

授權ID

1

CREATE_TIME

授權時間

1436320455

GRANT_OPTION

?

0

GRANTOR

授權執行用戶

liuxiaowen

GRANTOR_TYPE

授權者類型

USER

PRINCIPAL_NAME

被授權用戶

username

PRINCIPAL_TYPE

被授權用戶類型

USER

TBL_PRIV

權限

Select、Alter

TBL_ID

表ID

22,對應TBLS表中的TBL_ID

再看mysql中存儲Hive中所有數據庫基本信息的表DBS數據字典:

元數據表字段

說明

示例數據

DB_ID

數據庫ID

2

DESC

數據庫描述

測試庫

DB_LOCATION_URI

數據庫HDFS路徑

hdfs://namenode/user/hive/warehouse/sample.db

NAME

數據庫名

lxw1234

OWNER_NAME

數據庫所有者用戶名

lxw1234

OWNER_TYPE

所有者角色

USER

從mysql存儲的Hive元數據表數據字典看,Hive是基于元數據mysql管理多用戶權限,用戶權限信息都存儲在元數據表中。要重點理解是,mysql只是保存Hive的元數據,mysql本身的用戶和Hive沒有關系,Hive只是把自己的用戶信息保存在mysql元數據表中。數據字典中關于權限元數據總結如下:

Db_privs:記錄了User/Role在DB上的權限

Tbl_privs:記錄了User/Role在table上的權限

Tbl_col_privs:記錄了User/Role在table column上的權限

Roles:記錄了所有創建的role

Role_map:記錄了User與Role的對應關系

3)Hive用戶權限管理

從remote部署hive和mysql元數據表字典看,已經明確hive是通過存儲在元數據中的信息來管理用戶權限。現在重點是Hive怎么管理用戶權限。首先要回答的是用戶是怎么來的,發現hive有創建角色的命令,但沒有創建用戶的命令,顯然Hive的用戶不是在mysql中創建的。在回答這個問題之前,先初步了解下Hive的權限管理機制。

第一:在hive-site.xml文件中配置參數開啟權限認證

<property>

<name>hive.security.authorization.enabled</name>

<value>true</value>

<description>enableor disable the hive clientauthorization</description>

</property>

<property>

<name>hive.security.authorization.createtable.owner.grants</name>

<value>ALL</value>

<description>theprivileges automatically granted to the ownerwhenever a table gets created. Anexample like "select,drop" willgrant select and drop privilege to theowner of the table</description>

</property>

hive.security.authorization.enabled參數是開啟權限驗證,默認為false。

hive.security.authorization.createtable.owner.grants參數是指表的創建者對表擁有所有權限。

第二:Hive的權限管理是通過用戶(User)、組(Group)、角色(Role)來定義,角色定義了權限,賦予給組或用戶,用戶歸屬于組。

角色相關命令:create role rolename、drop rolename、grant rolename to user username;

第三:Hive權限控制:

? ?? ? 操作

? ???解釋

ALL

所有權限

ALTER

允許修改元數據(modify metadata data of??object)---表信息數據

UPDATE

允許修改物理數據(modify physical data of??object)---實際數據

CREATE

允許進行Create操作

DROP

允許進行DROP操作

INDEX

允許建索引(目前還沒有實現)

LOCK

當出現并發的使用允許用戶進行LOCK和UNLOCK操作

SELECT

允許用戶進行SELECT操作

SHOW_DATABASE

允許用戶查看可用的數據庫

例子:把select權限授權給username用戶,命令如下:

hive>grant select on database databasename to user username;

第四:為限制任何用戶都可以進行Grant/Revoke操作,提高安全控制,需事先Hive的超級管理員。在hive-site.xml中添加hive.semantic.analyzer.hook配置,并實現自己的權限控制類HiveAdmin。

<property>

? ??<name>hive.semantic.analyzer.hook</name>

??? <value>com.hive.HiveAdmin</value>

</property>

com.hive.HiveAdmin類代碼如下:

package com.hive; importorg.apache.hadoop.hive.ql.parse.ASTNode; importorg.apache.hadoop.hive.ql.parse.AbstractSemanticAnalyzerHook; importorg.apache.hadoop.hive.ql.parse.HiveParser; importorg.apache.hadoop.hive.ql.parse.HiveSemanticAnalyzerHookContext; importorg.apache.hadoop.hive.ql.parse.SemanticException; importorg.apache.hadoop.hive.ql.session.SessionState; publicclass HiveAdmin extendsAbstractSemanticAnalyzerHook { privatestatic String admin = "admin";@Override publicASTNodepreAnalyze(HiveSemanticAnalyzerHookContextcontext, ASTNodeast)throws SemanticException { switch(ast.getToken().getType()) { caseHiveParser.TOK_CREATEDATABASE: caseHiveParser.TOK_DROPDATABASE: caseHiveParser.TOK_CREATEROLE: caseHiveParser.TOK_DROPROLE: caseHiveParser.TOK_GRANT: caseHiveParser.TOK_REVOKE: caseHiveParser.TOK_GRANT_ROLE: caseHiveParser.TOK_REVOKE_ROLE:StringuserName = null; if(SessionState.get() != null &&SessionState.get().getAuthenticator()!= null){ userName=SessionState.get().getAuthenticator().getUserName();} if(!admin.equalsIgnoreCase(userName)) { thrownewSemanticException(userName+ " can't use ADMIN options,except " + admin +".");} break; default: break;} returnast;} }
這樣只有admin用戶這一超級管理員可以進行Grant/Revoke操作。

到此基本理解了Hive的用戶權限管理框架,但核心問題還是Hive的用戶組和用戶來自于哪里?既不是mysql中的用戶,Hive本身也不提供創建用戶組和用戶的命令。折騰一番后,突然理解Hive用戶組和用戶即Linux用戶組和用戶,和hadoop一樣,本身不提供用戶組和用戶管理,只做權限控制。

到此可以梳理下Hive用戶權限管理的簡單流程:

第一步:創建超級管理員;

第二步:新建linux用戶組和用戶,也可以在既定用戶組下建用戶,賦予用戶hive目錄權限;

第三步:超級管理員進入hive,授權新建用戶組和用戶的操作權限;

第四步:客戶端可以通過新建用戶名和密碼連接到hive執行授權內的動作;

4)Beeline工具

HiveServer2提供了一個新的命令行工具Beeline,它是基于SQLLine CLI的JDBC客戶端。Beeline工作模式有兩種,即本地嵌入模式和遠程模式。嵌入模式情況下,它返回一個嵌入式的Hive(類似于Hive CLI);而遠程模式則是通過Thrift協議與某個單獨的HiveServer2進程進行連接通信。

%bin/beeline

beeline>!connect

jdbc:hive2://<host>:<port>/<db>;

auth=noSaslhiveuser password org.apache.hive.jdbc.HiveDriver

命令中db就是在hiveserver中配置好的數據庫并授權hiveuser使用。

5)總結

首先hive用戶來自linux,和hadoop一樣,并具有組、用戶、角色的管理體系,其權限信息保存在元數據庫中。

當然hive安全認證還有很多需要進一步了解,以進一步管理hadoop集群平臺。

總結

以上是生活随笔為你收集整理的Hive用户权限管理理解的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 国产午夜精品免费一区二区三区视频 | 久操资源网 | 国产成人精品一二三区 | 男女av| 欧美人与动物xxx | 波多野结衣久久精品 | 国产人妻一区二区三区四区五区六 | 插我一区二区在线观看 | 九色视频偷拍少妇的秘密 | 国产奶头好大揉着好爽视频 | 丁香婷婷综合激情 | 欧美激情在线免费 | 中日韩精品视频在线观看 | 波多野结衣理论片 | 在线免费观看视频 | 成人在线免费观看网站 | 丝袜制服一区 | 国产麻豆精品在线观看 | av一道本| 日韩中文字幕观看 | 久久99国产精品 | 七七色影院 | 青娱乐国产 | 精品人妻无码在线 | 国产欧美一区二区三区视频在线观看 | 亚洲国产精品视频一区二区 | 女人一区二区 | 黄色片播放器 | 97精品国产 | 在线观看黄av | 韩国三级hd中文字幕叫床浴室 | 欧美高清视频在线观看 | 波多野结衣高清电影 | 国产丝袜久久 | 天堂男人网 | 99热播精品 | 啪啪福利视频 | chinese xxxx videos andvr| 亲女禁h啪啪宫交 | 日操夜操天天操 | 中文字幕在线成人 | 国产av成人一区二区三区高清 | 在线亚洲综合 | 三级三级久久三级久久18 | 国产在线二区 | 亚洲综合免费观看高清完整版在线 | 三上悠亚在线一区二区 | 在线观看视频91 | 91亚洲精品一区二区乱码 | 91极品身材尤物theporn | 日韩国产中文字幕 | 国产在线一区二 | 亚洲视频999 | 玖玖玖精品 | 精品国产18久久久久久二百 | 麻豆传媒映画官网 | 91麻豆一区二区 | 天天爽天天色 | 中文av网| 91久久综合亚洲鲁鲁五月天 | 一级大黄色片 | 青草青在线 | 亚洲乱码一区二区 | 无码久久av一区二区三区 | 区一区二视频 | 成年人拍拍视频 | 日本在线h| 久久久久中文字幕 | 视频在线观看 | 久操久操 | 日本黄色视 | 天天干夜夜想 | 午夜成人在线视频 | ⅹxxxxhd亚洲日本hd老师 | 男生女生操操操 | 日韩午夜剧场 | 男人操女人下面 | 中文字幕一区二区人妻痴汉电车 | 少妇导航av | 精品国产免费av | 亚洲一区二区三区四区在线观看 | 久久理论电影 | 亚洲一区二区三区不卡视频 | 天堂av在线免费 | 国产精品-区区久久久狼 | 婷婷.com| 四色成人av永久网址 | 国产18一19sex性护士 | 色婷婷色 | a中文在线 | 成年人精品 | 欧美性受xxxx狂喷水 | 绯色av一区二区三区高清 | 欧美久草视频 | 国产中文字幕精品 | 香蕉网站在线 | 国产精品自拍网站 | 国产一级片网址 | 亚洲青青操 |