配置SparkSQL业务用户权限
操作场景
SparkSQL业务还可能需要关联使用其他组件,例如Spark on HBase需要HBase权限。以下介绍SparkSQL关联HBase服务的操作。
前提条件
- 完成Spark客户端的安装,例如安装目录为“/opt/client”。
- 获取一个拥有MRS集群管理员权限的用户,例如“admin”。
操作步骤
- Spark on HBase授权
用户如果需要使用类似SQL语句的方式来操作HBase表,授予权限后可以使用SparkSQL访问HBase表。以授予用户在SparkSQL中查询HBase表的权限为例,操作步骤如下:
设置“spark.yarn.security.credentials.hbase.enabled”为“true”。
- 在Manager角色界面创建一个角色,例如“hive_hbase_create”,并授予创建HBase表的权限。
在“配置资源权限”的表格中选择“待操作集群的名称 > HBase > HBase Scope > global”,勾选命名空间“default”的“创建”,单击“确定”保存。
本例中建表是保存在Hive的“default”数据库中,默认具有“default”数据库的“建表”权限。如果Hive的数据库不是“default”,则还需要执行以下步骤:
在“配置资源权限”的表格中选择“待操作集群的名称 > Hive > Hive读写权限”,勾选所需指定的数据库的“建表”,单击“确定”保存。
- 在Manager角色界面创建一个角色,例如“hive_hbase_submit”,并授予提交任务到Yarn的队列的权限。
在“配置资源权限”的表格中选择“待操作集群的名称 > Yarn > 调度队列 > root”,勾选队列“default”的“提交”,单击“确定”保存。
- 在Manager用户界面创建一个“人机”用户,例如“hbase_creates_user”,加入“hive”组,绑定角色“hive_hbase_create”和“hive_hbase_submit”,用于创建SparkSQL表和HBase表。
- 以客户端安装用户登录安装客户端的节点。
- 执行以下命令,配置环境变量。
source /opt/client/bigdata_env
source /opt/client/Spark2x/component_env
- 执行以下命令,认证用户。
- 执行以下命令,进入Spark JDBCServer客户端shell环境:
/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.<系统域名>@<系统域名>;"
- 执行以下命令,同时在SparkSQL和HBase中创建表。例如创建表hbaseTable。
create table hbaseTable (id string, name string, age int) using org.apache.spark.sql.hbase.HBaseSource options (hbaseTableName "table1", keyCols "id", colsMapping = ", name=cf1.cq1, age=cf1.cq2");
创建好的SparkSQL表和HBase表分别保存在Hive的数据库“default”和HBase的命名空间“default”。
- 在Manager角色界面创建一个角色,例如“hive_hbase_select”,并授予查询SparkSQL on HBase表hbaseTable和HBase表hbaseTable的权限。
- 在“配置资源权限”的表格中选择“待操作集群的名称 > HBase > HBase Scope > global > default”,勾选表hbaseTable的“读”,单击“确定”保存,授予HBase角色查询表的权限。
- 编辑角色,在“配置资源权限”的表格中选择“待操作集群的名称 > HBase > HBase Scope > global > hbase”,勾选表“hbase:meta”的“执行”,单击“确定”保存。
- 编辑角色,在“配置资源权限”的表格中选择“待操作集群的名称 > Hive > Hive读写权限 > default”,勾选表hbaseTable的“查询”,单击“确定”保存。
- 在Manager用户界面创建一个“人机”用户,例如“hbase_select_user”,加入“hive”组,绑定角色“hive_hbase_select”,用于查询SparkSQL表和HBase表。
- 执行以下命令,配置环境变量。
source /opt/client/bigdata_env
source /opt/client/Spark2x/component_env
- 执行以下命令,认证用户。
- 执行以下命令,进入Spark JDBCServer客户端shell环境:
/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.<系统域名>@<系统域名>;"
- 执行以下命令,使用SparkSQL语句查询HBase表的数据。
- 在Manager角色界面创建一个角色,例如“hive_hbase_create”,并授予创建HBase表的权限。