项目地址
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启动时拉起,也不回收;可通过该配置项指定具体拉起的用户及其scspark.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
作者:风景不美
链接:https://www.jianshu.com/p/1eab071d4f1d
共同学习,写下你的评论
评论加载中...
作者其他优质文章