更新时间:2023-03-17 GMT+08:00

配置SparkSQL业务使用其他组件的权限

操作场景

SparkSQL业务还可能需要关联使用其他组件,例如spark on HBase需要HBase权限。以下介绍SparkSQL关联HBase服务的操作。

前提条件

  • 完成Spark客户端的安装,例如安装目录为“/opt/client”。
  • 获取一个拥有管理员权限的用户,例如“admin”

操作步骤

  • Spark on HBase授权

    用户如果需要使用类似SQL语句的方式来操作HBase表,授予权限后可以使用SparkSQL访问HBase表。以授予用户在SparkSQL中查询HBase表的权限为例,操作步骤如下:

    设置“spark.yarn.security.credentials.hbase.enabled”“true”

    1. 在Manager角色界面创建一个角色,例如“hive_hbase_create”,并授予创建HBase表的权限。

      在“配置资源权限”的表格中选择“待操作集群的名称 > HBase > HBase Scope > global”,勾选命名空间“default”创建,单击“确定”保存。

      本例中建表是保存在Hive的“default”数据库中,默认具有“default”数据库的“建表”权限。如果Hive的数据库不是“default”,则还需要执行以下步骤:

      在“配置资源权限”的表格中选择“待操作集群的名称 > Hive > Hive读写权限”,勾选所需指定的数据库的“建表”,单击“确定”保存。

    2. 在Manager角色界面创建一个角色,例如“hive_hbase_submit”,并授予提交任务到Yarn的队列的权限。

      在“配置资源权限”的表格中选择“待操作集群的名称 > Yarn > 调度队列 > root”,勾选队列“default”提交,单击“确定”保存。

    3. 在Manager用户界面创建一个“人机”用户,例如“hbase_creates_user”,加入“hive”组,绑定角色“hive_hbase_create”“hive_hbase_submit”,用于创建SparkSQL表和HBase表。
    4. 以客户端安装用户登录安装客户端的节点。
    5. 执行以下命令,配置环境变量。

      source /opt/client/bigdata_env

      source /opt/client/Spark2x/component_env

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

      kinit hbase_creates_user

    7. 执行以下命令,进入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.<系统域名>@<系统域名>;"

    8. 执行以下命令,同时在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”

    9. 在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的“查询”,单击“确定”保存。
    10. 在Manager用户界面创建一个“人机”用户,例如“hbase_select_user”,加入“hive”组,绑定角色“hive_hbase_select”,用于查询SparkSQL表和HBase表。
    11. 执行以下命令,配置环境变量。

      source /opt/client/bigdata_env

      source /opt/client/Spark2x/component_env

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

      kinit hbase_select_user

    13. 执行以下命令,进入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.<系统域名>@<系统域名>;"

    14. 执行以下命令,使用SparkSQL语句查询HBase表的数据。

      select * from hbaseTable;