BenjaminYang In solitude, where we are least alone

hive(七)hive-运行方式、GUI接口、权限管理

1.Hive运行方式:

命令行方式cli:控制台模式
脚本运行方式(实际生产环境中用最多)
JDBC方式:hiveserver2
web GUI接口 (hwi、hue等)
 

1.1Hive在CLI模式中与hdfs交互

执行执行dfs命令
例:dfs –ls /

1.2与Linux交互 !开头

例: !pwd

1.3Hive脚本运行方式:

hive -e "hive sql"
hive -e "hive sql">aaa
hive -S -e "">aaa   # -S 代表静默模式,查询结果不显示只会追加到文件
hive -f file     # 指定运行含有sql的文件,运行结束不会进入hive cli
hive -i /home/my/hive-init.sql   # 指定运行含有sql的文件,运行结束会进入hive cli
hive> source file (在hive cli中运行)

 

2.Hive Web GUI接口

web界面安装:

2.1下载源码包apache-hive-*-src.tar.gz

2.2将hwi war包放在$HIVE_HOME/lib/

2.3制作war包

制作方法:将hwi/web/*里面所有的文件打成war包
cd apache-hive-1.2.1-src/hwi/web
jar -cvf hive-hwi.war *

2.4复制tools.jar(在jdk的lib目录下)到$HIVE_HOME/lib下

 

2.5修改hive配置文件hive-site.xml

添加以下配置内容:
<property>
    <name>hive.hwi.listen.host</name>
    <value>0.0.0.0</value>
  </property>
  <property>
    <name>hive.hwi.listen.port</name>
    <value>9999</value>
  </property>
  <property>
    <name>hive.hwi.war.file</name>
    <value>lib/hive-hwi.war</value>
</property>

 

2.6启动hwi服务(端口号9999)

hive --service hwi

 

2.7浏览器通过以下链接来访问

http://node3:9999/hwi/

 
user groups 随便写,hive不验证用户名密码
进入创建session
执行sql查询语句时start Query 选择yes
 

3.Hive 权限管理

3.1三种授权模型:

1、Storage Based Authorization in the Metastore Server
基于存储的授权 - 可以对Metastore中的元数据进行保护,但是没有提供更加细粒度的访问控制(例如:列级别、行级别)。
2、SQL Standards Based Authorization in HiveServer2
基于SQL标准的Hive授权 - 完全兼容SQL的授权模型,推荐使用该模式。
3、Default Hive Authorization (Legacy Mode)
hive默认授权 - 设计目的仅仅只是为了防止用户产生误操作,而不是防止恶意用户访问未经授权的数据。
 
 
Hive - SQL Standards Based Authorization in HiveServer2

3.2完全兼容SQL的授权模型

除支持对于用户的授权认证,还支持角色role的授权认证
role可理解为是一组权限的集合,通过role为用户授权
一个用户可以具有一个或多个角色
默认包含另种角色:public(普通)、admin(管理员)
 
Hive - SQL Standards Based Authorization in HiveServer2

3.3限制:

1、启用当前认证方式之后,dfs, add, delete, compile, and reset等命令被禁用。
2、通过set命令设置hive configuration的方式被限制某些用户使用。
(可通过修改配置文件hive-site.xml中hive.security.authorization.sqlstd.confwhitelist进行配置)
3、添加、删除函数以及宏的操作,仅为具有admin的用户开放。
4、用户自定义函数(开放支持永久的自定义函数),可通过具有admin角色的用户创建,其他用户都可以使用。
5、Transform功能被禁用。
 
Hive - SQL Standards Based Authorization in HiveServer2

3.4在hive服务端修改配置文件hive-site.xml添加以下配置内容:

<property>
  <name>hive.security.authorization.enabled</name>
  <value>true</value>
</property>
<property>
  <name>hive.server2.enable.doAs</name>
  <value>false</value>
</property>
<property>
  <name>hive.users.in.admin.role</name>
  <value>root</value>
</property>
<property>
  <name>hive.security.authorization.manager</name>
  <value>org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactory</value>
</property>
<property>
  <name>hive.security.authenticator.manager</name>
  <value>org.apache.hadoop.hive.ql.security.SessionStateUserAuthenticator</value>
</property>

 

3.5服务端启动hiveserver2;客户端通过beeline进行连接

服务端:
[root@node02 conf]# hiveserver2
which: no hbase in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/java/jdk1.8.0_191-amd64/bin:/opt/hadoop-3.1.1/bin:/opt/hadoop-3.1.1/sbin:/opt/zookeeper-3.4.10/bin:/opt/apache-hive-3.1.1-bin/bin:/root/bin)
2019-01-17 04:48:23: Starting HiveServer2
Hive Session ID = b1daa494-ef2c-48ca-a0f1-8e9f9bc0b228
Hive Session ID = 81156e8b-22e8-4a03-826f-481a8217f9c1
Hive Session ID = 1f5c7b7a-b03e-424e-a833-a593353a4068
Hive Session ID = bcc2a4ab-6b4e-4c10-b1f0-566fdc03cc22

 

[root@node04 ~]# beeline -u jdbc:hive2://node02:10000/default -n root -p hive
 
 
Hive权限管理

3.6角色的添加、删除、查看、设置:

CREATE ROLE role_name;  -- 创建角色
DROP ROLE role_name;  -- 删除角色
SET ROLE (role_name|ALL|NONE);  -- 设置角色
SHOW CURRENT ROLES;  -- 查看当前具有的角色
SHOW ROLES;  -- 查看所有存在的角色
当前用户root 不被允许执行show roles 命令。
查看当前用户的角色
jdbc:hive2://node02:10000/default> show current roles;
+---------+
|  role   |
+---------+
| public  |
+---------+

 

将其角色设置为admin
0: jdbc:hive2://node02:10000/default> set role admin;

 

查看当前用户所属角色
0: jdbc:hive2://node02:10000/default> show current roles;
INFO  : OK
INFO  : Concurrency mode is disabled, not creating a lock manager
+--------+
|  role  |
+--------+
| admin  |
+--------+
 
创建一个test角色
0: jdbc:hive2://node02:10000/default> create role test;
0: jdbc:hive2://node02:10000/default> show roles;
INFO  : OK
INFO  : Concurrency mode is disabled, not creating a lock manager
+---------+
|  role   |
+---------+
| admin   |
| public  |
| test    |
+---------+

 

删除角色
0: jdbc:hive2://node02:10000/default> drop role test;

 

角色的授予、移除、查看
将角色授予某个用户、角色:
GRANT role_name [, role_name] ...
TO principal_specification [, principal_specification] ...
[ WITH ADMIN OPTION ];
principal_specification
  : USER user
  | ROLE role

 

 
移除某个用户、角色的角色:
REVOKE [ADMIN OPTION FOR] role_name [, role_name] ...
FROM principal_specification [, principal_specification] ... ;
principal_specification
  : USER user
  | ROLE role

 

 
查看授予某个用户、角色的角色列表
SHOW ROLE GRANT (USER|ROLE) principal_name
 
 
查看属于某种角色的用户、角色列表
SHOW PRINCIPALS role_name
 
权限:
 
SELECT privilege – gives read access to an object.
INSERT privilege – gives ability to add data to an object (table).
UPDATE privilege – gives ability to run update queries on an object (table).
DELETE privilege – gives ability to delete data in an object (table).
ALL PRIVILEGES – gives all privileges (gets translated into all the above privileges).

 

 

 

posted @ 2019-01-21 10:38  benjamin杨  阅读(1519)  评论(0编辑  收藏  举报