Hive运行方式
- 命令行方式cli:控制台模式
- 脚本运行方式(实际生产环境中用最多,不可人为控制,只能根据时间定时操作)🌟🌟🌟
- JDBC方式:hiveserver2
- web GUI接口 (hwi、hue等)❌ 很low
Hive在CLI模式中
hdfs的操作,在hive上都可以执行(操作很快!)
hive> dfs -cat /user/hive/warehouse/psn/*;
1,小明1,lol-book-movie,shenzhen:luohu-shanghai:pudong
2,小明2,lol-book-movie,shenzhen:luohu-shanghai:pudong
3,小明3,lol-book-movie,shenzhen:luohu-shanghai:pudong
4,小明4,lol-movie,shenzhen:luohu-shanghai:pudong
5,小明5,lol-book-movie,shenzhen:luohu-shanghai:pudong
6,小明6,lol-book-movie,shenzhen:luohu-shanghai:pudong
7,小明7,lol-book-game,shenzhen:luohu-shanghai:pudong
8,小明8,lol-book-movie,shenzhen:luohu-shanghai:pudong
9,小明9,lol-book-movie,shenzhen:luohu-shanghai:pudong
与Linux交互
! 开头
hive> !pwd
/root
Hive脚本运行方式:
客户端#
执行hive语句
[root@node002 ~]# hive -e "select * from psn"
[root@node002 ~]# hive -e "select * from psn" > aaa.txt # 查询结果追加到文件
[root@node002 ~]# hive -S -e "select * from psn" > aaa # -S 静默输出
[root@node002 ~]# hive -f file.sql # 执行多条语句🌟
[root@node002 ~]# hive -i /home/my/hive-init.sql # 执行完结果后,进入hive
hive> source file (在hive cli中运行)
Hive权限管理
Hive - SQL Standards Based Authorization in HiveServer2
完全兼容SQL的授权模型
除支持对于用户的授权认证,还支持角色role的授权认证
role可理解为是一组权限的集合,通过role为用户授权
一个用户可以具有一个或多个角色
默认包含另种角色:public、admin
- 启用当前认证方式之后,
dfs
,add
,delete
,compile
, andreset
等命令被禁用 - 通过set命令设置
hive configuration
的方式被限制某些用户使用。(可通过修改配置文件hive-site.xml
中hive.security.authorization.sqlstd.confwhitelist
进行配置) - 添加、删除函数以及宏的操作,仅为具有
admin
的用户开放 - 用户自定义函数(开放支持永久的自定义函数),可通过具有
admin
角色的用户创建,其他用户都可以使用 -
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进行连接
角色的添加、删除、查看、设置:
CREATE ROLE role_name; -- 创建角色
DROP ROLE role_name; -- 删除角色
SET ROLE (role_name|ALL|NONE); -- 设置角色
SHOW CURRENT ROLES; -- 查看当前具有的角色
SHOW ROLES; -- 查看所有存在的角色
给角色授予、移除、查看
将角色授予某个用户、角色:
GRANT role_name [, role_name] ...
TO principal_specification [, principal_specification] ...
[ WITH ADMIN OPTION ];
principal_specification
: USER user
| ROLE role
查看授予某个用户、角色的角色列表
SHOW ROLE GRANT (USER|ROLE) principal_name;
查看属于某种角色的用户、角色列表
SHOW PRINCIPALS role_name;
移除某个用户、角色的角色:
REVOKE [ADMIN OPTION FOR] role_name [, role_name] ...
FROM principal_specification [, principal_specification] ... ;
principal_specification
: USER user
| ROLE role
权限的授予、移除、查看
将权限授予某个用户、角色:
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] ... ;
查看某个用户、角色的权限:
SHOW GRANT [principal_name] ON (ALL| ([TABLE] table_or_view_name)
principal_specification
: USER user
| ROLE role
priv_type
: INSERT | SELECT | UPDATE | DELETE | ALL
hive 本质做数据分析,权限没什么用,还降低效率了!
企业没人做权限管理!
权限类型:
-
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
privilege – gives all privileges (gets translated into all the above privileges).
Hive Web GUI接口
web界面安装:
下载源码包apache-hive-*-src.tar.gz
将hwi war包放在$HIVE_HOME/lib/
制作方法:将hwi/web/*里面所有的文件打成war包
cd apache-hive-1.2.1-src/hwi/web
jar -cvf hive-hwi.war *
复制tools.jar(在jdk的lib目录下)到$HIVE_HOME/lib下
修改hive-site.xml
启动hwi服务(端口号9999)
hive --service hwi
浏览器通过以下链接来访问
http://node002:9999/hwi/
修改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>
参考资料
Hadoop集群上搭建Hive
Hive建表并加载数据
Hive参数和动态分区
Hive分桶
Hive视图和索引
SQL之Grant(分配权限)和Revoke(回收权限)