更新时间:2022-11-04 GMT+08:00

创建SparkSQL角色

操作场景

该任务指导MRS集群管理员在Manager创建并设置SparkSQL的角色。SparkSQL角色可设置Spark管理员权限以及数据表的数据操作权限。

用户使用Hive并创建数据库需要加入hive组,不需要角色授权。用户在Hive和HDFS中对自己创建的数据库或表拥有完整权限,可直接创建表、查询数据、删除数据、插入数据、更新数据以及授权他人访问表与对应HDFS目录与文件。默认创建的数据库或表保存在HDFS目录“/user/hive/warehouse”。

  • 如果当前组件使用了Ranger进行权限控制,须基于Ranger配置相关策略进行权限管理,具体操作可参考添加Spark2x的Ranger访问权限策略
  • Spark2x开启或关闭Ranger鉴权后,需要重启Spark2x服务,并重新下载客户端,或刷新客户端配置文件spark/conf/spark-defaults.conf:

    开启Ranger鉴权:spark.ranger.plugin.authorization.enable=true

    关闭Ranger鉴权:spark.ranger.plugin.authorization.enable=false

操作步骤

  1. 登录Manager页面,选择“系统 > 权限 > 角色”
  2. 单击“添加角色”,然后“角色名称”“描述”输入角色名字与描述。
  3. 设置角色配置资源权限”请参见表1
    • “Hive管理员权限”:Hive管理员权限。
    • “Hive读写权限”:Hive数据表管理权限,可设置与管理已创建的表的数据操作权限。
      • Hive角色管理支持授予Hive管理员权限、访问表和视图的权限,不支持数据库的授权。
      • Hive管理员权限不支持管理HDFS的权限。
      • 如果数据库中的表或者表中的文件数量比较多,在授权时可能需要等待一段时间。例如表的文件数量为1万时,可能需要等待2分钟。
      表1 设置角色

      任务场景

      角色授权操作

      设置Hive管理员权限

      配置资源权限”的表格中选择“待操作集群的名称 > Hive”,勾选“Hive管理权限”

      用户绑定Hive管理员角色后,在每个维护操作会话中,还需要执行以下操作:
      1. 以客户端安装用户,登录安装Spark2x客户端的节点。
      2. 执行以下命令配置环境变量。

        例如,Spark2x客户端安装目录为“/opt/client”,执行source /opt/client/bigdata_env

        source /opt/client/Spark2x/component_env

      3. 执行以下命令认证用户。

        kinit Hive业务用户

      4. 执行以下命令登录客户端工具。

        /opt/client/Spark2x/spark/bin/beeline -u "jdbc:hive2://<zkNode1_IP>:<zkNode1_Port>,<zkNode2_IP>:<zkNode2_Port>,<zkNode3_IP>:<zkNode3_Port>/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=sparkthriftserver2x;user.principal=spark2x/hadoop.<系统域名>@<系统域名>;saslQop=auth-conf;auth=KERBEROS;principal=spark2x/hadoop.<系统域名>@<系统域名>;"

        说明:
        • 其中“<zkNode1_IP>:<zkNode1_Port>,<zkNode2_IP>:<zkNode2_Port>,<zkNode3_IP>:<zkNode3_Port>”是Zookeeper的URL。例如“192.168.81.37:2181,192.168.195.232:2181,192.168.169.84:2181”。
        • 其中“sparkthriftserver”是Zookeeper上的目录,表示客户端从该目录下随机选择Triftserver实例或proxyThriftServer进行连接。
        • 用户可登录Manager,选择“系统 > 权限 > 域和互信”,查看“本端域”参数,即为当前系统域名。“spark2x/hadoop.<系统域名>”为用户名,用户的用户名所包含的系统域名所有字母为小写。例如“本端域”参数为“9427068F-6EFA-4833-B43E-60CB641E5B6C.COM”,用户名为“spark2x/hadoo.9427068f-6efa-4833-b43e-60cb641e5b6c.com”。
      5. 执行以下命令更新用户的管理员权限。

        set role admin;

      设置在默认数据库中,查询其他用户表的权限

      1. 配置资源权限”的表格中选择“待操作集群的名称 > Hive > Hive读写权限”。
      2. 在数据库列表中单击指定的数据库名称,显示数据库中的表。
      3. 在指定表的“权限”列,勾选“查询”

      设置在默认数据库中,导入数据到其他用户表的权限

      1. 配置资源权限”的表格中选择“待操作集群的名称 > Hive > Hive读写权限”。
      2. 在数据库列表中单击指定的数据库名称,显示数据库中的表。
      3. 在指定表的“权限”列,勾选“删除”“插入”
  4. 单击“确定”完成。