Hive运行方式
hive一共有四种运行方式,前面已经介绍了Cli和JDBC。
命令行方式cli:控制台模式
脚本运行方式(实际生产环境中用最多)
JDBC方式:hiveserver2
web GUI接口 (hwi、hue等)
1.命令行方式cli:控制台模式
hive使用hive>dfs -cat /usr/wc比[root@node4 ~]hdfs dfs -cat /usr/wc快,为什么?
hdfs花费时间建立连接,hive不需要(在敲hive进入hive时很耗费时间,就是建立连接)
hive也可以和linux发生交互
和本地系统交互注意加上!
与hdfs交互
执行执行dfs命令
例:dfs –ls /
与Linux交互
!开头
例: !pwd
2.Hive脚本运行方式:
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中运行)
3.JDBC方式:hiveserver2
20.Hive中的beeline和jdbc(hive学习3)
4.web GUI接口 (hwi、hue等)
Hive Web GUI接口
web界面安装:
下载源码包apache-hive-*-src.tar.gz
将hwi war包放在$HIVE_HOME/lib/
制作war包
制作方法:将hwi/web/*里面所有的文件打成war包
cd apache-hive-1.2.1-src/hwi/web
jar -cvf hive-hwi.war *
包应该放在服务端(node3),而不是客户端
复制tools.jar(在jdk的lib目录下)到$HIVE_HOME/lib下
修改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>
启动hwi服务(端口号9999)
hive --service hwi
浏览器通过以下链接来访问
http://node3:9999/hwi/
hwi属于hive自带的可视化工具,不常用。没必要自己搭建
hbase新版本2.x已经移除了
Hive权限管理
1、Storage Based Authorization in the Metastore Server
基于存储的授权 - 可以对Metastore中的元数据进行保护,但是没有提供更加细粒度的访问控制(例如:列级别、行级别)。只能对表
2、SQL Standards Based Authorization in HiveServer2
基于SQL标准的Hive授权 - 完全兼容SQL的授权模型,推荐使用该模式。必须启用hiveserver2。
3、Default Hive Authorization (Legacy Mode)
hive默认授权 - 设计目的仅仅只是为了防止用户产生误操作,而不是防止恶意用户访问未经授权的数据。
官网:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Authorization
Hive - SQL Standards Based Authorization in HiveServer2
一完全兼容SQL的授权模型
除支持对于用户的授权认证,还支持角色role的授权认证
- role可理解为是一组权限的集合,通过role为用户授权(类似于)
- 一个用户可以具有一个或多个角色
- 默认包含另种角色:public(普通)、admin(管理员)
二限制
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服务端修改配置文件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>
服务端启动hiveserver2;客户端通过beeline进行连接
另一种连接方式(在我的文章//www.greatytc.com/p/3d609ae3b191提到过)
[root@node2 ~]# beeline -u jdbc:hive2://node02:10000/default -n root -p hive
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).
权限的授予、移除、查看
将权限授予某个用户、角色:
GRANT
priv_type [, priv_type ] ...
ON table_or_view_name
TO principal_specification [, principal_specification] ...
[WITH GRANT OPTION];
移除某个用户、角色的权限:
REVOKE [GRANT OPTION FOR]
priv_type [, priv_type ] ...
ON table_or_view_name
FROM principal_specification [, principal_specification] ... ;
principal_specification
: USER user
| ROLE role
priv_type
: INSERT | SELECT | UPDATE | DELETE | ALL
查看某个用户、角色的权限:
SHOW GRANT [principal_name] ON (ALL| ([TABLE] table_or_view_name)
Hive权限管理
Y: Privilege required.
Y + G: Privilege "WITH GRANT OPTION" required.
本图来自官网
https://cwiki.apache.org/confluence/display/Hive/SQL+Standard+Based+Hive+Authorization
在此网页ctrl+f 输入 Privileges Required for Hive Operations就可看到