
# 配置Spark多租户模式
#### 配置场景
多租户模式是将JDBCServer和租户绑定，每一个租户对应一个或多个JDBCServer，一个JDBCServer只给一个租户提供服务。不同的租户可以配置不同的Yarn队列，从而达到资源隔离。
![](https://support.huaweicloud.com/cmpntguide-mrs/public_sys-resources/note_3.0-zh-cn.png)
Yarn资源不足情况下，不建议开启多租户模式。
#### 配置描述
登录Manager，选择"集群 \> *待操作集群的名称* \> 服务 \> Spark2x \> 配置"，单击"全部配置"，搜索并修改以下参数。
表1参数说明 
| **参数**                                                | **说明**                                                                                                                                                                                                                                                                                                                                                                                                  | **默认值**                                                                                                                     |
|:---|:---|:---|
| spark.proxyserver.hash.enabled                        | 是否使用Hash算法连接ProxyServer。 - true为使用Hash算法，使用多租户模式时，该参数需配置为true。  - false为使用随机连接，多主实例模式，配置为false。   | true 说明： 该参数修改后需要重新下载客户端。 |
| spark.thriftserver.proxy.enabled                      | 是否使用多租户模式。 - false表示使用多实例模式  - true表示使用多租户模式                                                      | true                                                                                                                        |
| spark.thriftserver.proxy.maxThriftServerPerTenancy    | 多租户模式下，一个租户可启动JDBCServer实例的最大个数。                                                                                                                                                                                                                                                                                                                                                                        | 1                                                                                                                           |
| spark.thriftserver.proxy.maxSessionPerThriftServer    | 多租户模式下，单个JDBCServer实例的session数量超过该值时，如果租户的JDBCServer最大实例数量没超过限制，则启动新的JDBCServer，否则输出警告日志。                                                                                                                                                                                                                                                                                                               | 50                                                                                                                          |
| spark.thriftserver.proxy.sessionWaitTime              | 多租户模式下，当JDBCServer的session连接数为0时，停止JDBCServer前的等待时间。                                                                                                                                                                                                                                                                                                                                                    | 180000                                                                                                                      |
| spark.thriftserver.proxy.sessionThreshold             | 多租户模式下，当JDBCServer的session使用率（公式：当前session数 / (spark.thriftserver.proxy.maxSessionPerThriftServer \* 当前JDBCServer个数)）达到阈值时，自动新增JDBCServer。                                                                                                                                                                                                                                                              | 100                                                                                                                         |
| spark.thriftserver.proxy.healthcheck.period           | 多租户模式下，JDBCServer代理检查JDBCServer健康状态周期。                                                                                                                                                                                                                                                                                                                                                                  | 60000                                                                                                                       |
| spark.thriftserver.proxy.healthcheck.recheckTimes     | 多租户模式下，JDBCServer代理检查JDBCServer健康状态失败后重试次数。                                                                                                                                                                                                                                                                                                                                                             | 3                                                                                                                           |
| spark.thriftserver.proxy.healthcheck.waitTime         | 多租户模式下，JDBCServer代理发送健康检查，等待JDBCServer响应的超时时间。                                                                                                                                                                                                                                                                                                                                                          | 10000                                                                                                                       |
| spark.thriftserver.proxy.session.check.interval       | 多租户模式下，JDBCServer代理检查session的周期。                                                                                                                                                                                                                                                                                                                                                                        | 6h                                                                                                                          |
| spark.thriftserver.proxy.idle.session.timeout         | 多租户模式下，JDBCServer代理session的空闲超时时间。如果在这段时间内没有做任何操作，session会被关闭。                                                                                                                                                                                                                                                                                                                                          | 7d                                                                                                                          |
| spark.thriftserver.proxy.idle.session.check.operation | 多租户模式下，JDBCServer代理session的过期是否要判断该session上还存在operation。                                                                                                                                                                                                                                                                                                                                                | true                                                                                                                        |
| spark.thriftserver.proxy.idle.operation.timeout       | 多租户模式下，operation的超时时间。如果operation超时，operation会被关闭。                                                                                                                                                                                                                                                                                                                                                      | 5d                                                                                                                          |
| hive.spark.client.server.connect.timeout              | 多租户模式下，客户端连接超时时间。                                                                                                                                                                                                                                                                                                                                                                                       | 5min                                                                                                                        |
   
