美文网首页大数据BigData
Hive运行方式和授权

Hive运行方式和授权

作者: geekAppke | 来源:发表于2018-12-17 21:56 被阅读19次

    Hive运行方式

    1. 命令行方式cli:控制台模式
    2. 脚本运行方式(实际生产环境中用最多,不可人为控制,只能根据时间定时操作)🌟🌟🌟
    3. JDBC方式:hiveserver2
    4. 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
    
    1. 启用当前认证方式之后,dfs, add, delete, compile, and reset等命令被禁用
    2. 通过set命令设置hive configuration的方式被限制某些用户使用。(可通过修改配置文件hive-site.xmlhive.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进行连接

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

    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(回收权限)

    相关文章

      网友评论

        本文标题:Hive运行方式和授权

        本文链接:https://www.haomeiwen.com/subject/jocqkqtx.html