
# 配置多主实例模式
#### 操作场景
基于社区已有的JDBCServer基础上，采用多主实例模式实现了其高可用性方案。集群中支持同时共存多个ThriftServer服务，通过客户端可以随机连接其中的任意一个服务进行业务操作。即使集群中一个或多个ThriftServer服务停止工作，也不影响用户通过同一个客户端接口连接其他正常的ThriftServer服务。
多主实例模式相比主备模式的HA方案，优势主要体现在对以下两种场景的改进。
- 主备模式下，当发生主备切换时，会存在一段时间内服务不可用，该段时间JDBCServer无法控制，取决于Yarn服务的资源情况。
- Spark中通过类似于HiveServer2的Thrift JDBC提供服务，用户通过Beeline以及JDBC接口访问。因此JDBCServer集群的处理能力取决于主Server的单点能力，可扩展性不够。
采用多主实例模式的HA方案，不仅可以规避主备切换服务中断的问题，实现服务不中断或少中断，还可以通过横向扩展集群来提高并发能力。
#### 配置描述
1. 登录FusionInsight Manager系统。 
   详细操作请参考[访问集群Manager](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_2124.html)。
   
   
2. 选择"集群 \> 服务 \> Spark2x/Spark \> 配置"，单击"全部配置"，搜索并调整以下参数。 
   表1多主实例参数说明 
   | 参数                                              | 参数说明                                                                                                 | 配置示例    |
   |:---|:---|:---|
   | spark.thriftserver.zookeeper.connection.timeout | JDBCServer连接到Zookeeper客户端时使用的连接超时时间，单位：毫秒。 取值范围：1000\~2147483647。     | 6000    |
   | spark.thriftserver.zookeeper.session.timeout    | JDBCServer连接到Zookeeper客户端时使用的会话超时时间，单位：毫秒。 取值范围：0\~2147483647。         | 90000   |
   | spark.thriftserver.zookeeper.retry.times        | JDBCServer连接到Zookeeper客户端失联后，使用的重试次数。 取值范围：0\~3600。 | 3       |
   | spark.yarn.queue                                | JDBCServer应用提交时使用的Yarn队列名称。                                                                          | default |
      
   
   

3. 修改参数配置后，单击"保存"，根据界面提示操作后，等待配置保存成功。
4. Spark服务端配置更新后，如果"配置状态"为"配置过期"，则需重启组件以使配置生效。 
   图1修改Spark配置   
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000002339162289.png "点击放大")
   在Spark服务概览页面，选择"更多 \> 重启服务/滚动重启服务"，验证管理员密码后，等待服务重启成功。
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/public_sys-resources/warning_3.0-zh-cn.png)
   组件重启期间将无法对外提供服务，可能会影响集群的上层业务正常运行，请在业务空闲期或确认操作无影响后再执行本操作。
   
   
 
#### 相关文档
Spark多主实例更多介绍请参考[Spark2x多主实例](https://support.huaweicloud.com/productdesc-mrs/mrs_08_007103.html)。
