Spark Multi Tenancy系列 - 3 项目简介

项目地址

A Fully HiveServer2-like Multi-tenancy Spark Thrift Server Supporting Impersonation and Multi-SparkContext
https://github.com/yaooqinn/multi-tenancy-spark

项目特性

  • 支持静态和动态两种多租户模式(Test only On YARN)
  • 支持SparkContext多实例,以用户区分,单用户只能实例化一个sc
  • 支持hive.server2.doAs.enabled
  • 支持hive.server2.proxy.user做代理执行,动态和静态方式不同
  • 支持Apache Ranger粒度到Column的控制
  • 支持Operation级别的Log(动态Only)
  • 支持High Availability; 动态模式可无缝加入hiveserver2的zk namespace

静态模式

启动
./sbin/start-thriftserver.sh
停止
./sbin/stop-thriftserver.sh
配置
## 静态方式下用户的sc直接在thrift server启动时拉起,也不回收;可通过该配置项指定具体拉起的用户及其sc
spark.sql.proxy.users                                 user1,user2,...
## 指定属于该用户的队列名
spark.sql.queue.da_edu                                queue1
spark.sql.queue.beauty                                queue2

其中,这些用户需要能被spark.yarn.principal里的用户代理
在hdfs上有对应权限的staging目录,一般是/user/username
其他配置按照spark常规的配置即可

连接

bin/beeline -u "jdbc:hive2://kent.spark.org:10000/default;principal=hive/app-20.photo.163.org@HADOOP.HZ.NETEASE.COM;hive.server2.proxy.user=user1"

如果配置正确,该session会在user1启动的sc下执行相关的sql

动态模式

启动
./sbin/start-multitenancy-server.sh
停止
./sbin/stop-multitenancy-server.sh
配置

动态的配置只需要按spark常规的配置即可,启动参数除了默认的spark-defaults.conf里面配置以外,可以通过Thrift连接串指定,默认sc是20min空闲自动关闭,所以一旦sc启动了,默写静态的参数就无法再修改了,得等他超时被stop掉

连接
 bin/beeline -u "jdbc:hive2://kent.spark.org::10001/default;principal=hive/_HOST@TEST.AMBARI.NETEASE.COM;hive.server2.proxy.user=spark_test#hive.metastore.warehouse.dir=/user/spark_test/warehouse;spark.executor.memory=10g"

上例中,可指定该spark_test用户执行,设置默认的warehouse路径为/user/spark_test/warehouse;executor内存为10g

    原文作者:Kent_Yao
    原文地址: https://www.jianshu.com/p/1eab071d4f1d
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞