全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > AI人工智能 > AI通用技术 >

SparkSQL节点访问双主的元数据库主要的两种方案分

时间:2017-12-06 10:10

人气:

作者:admin

标签: 数据库 

导读:SparkSQL节点访问双主的元数据库主要的两种方案分析-点击上方“中兴开发者社区”,关注我们 每天读一篇一线开发者原创好文 来源 | 中兴大数据 “ 开源的Spark SQL并不支持高可用,但实...

开源的Spark SQL并不支持高可用,但实际应用中高可用对于用户意义重大。中兴大数据平台DAP在对应的ZDH中实现了Spark SQL的高可用。

Spark SQL的高可用,是两个Spark SQL服务上线的时候向SQL进行注册,用户连接的JDBC URL指定为Zookeeper的列表,连接的时候会通过Zookeeper集群获取Spark SQL节点信息,然后连接到Spark SQL服务节点。

Spark SQL元数据双主主要是用MySQL实现,MySQL支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护日志文件的索引以跟踪日志循环。从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知下一次更新。

在实际项目中,两台分布于异地的主机上安装有MySQL数据库,两台服务器互为主备,当其中一台机器出现故障时,另外一台能够接管服务器上的应用,这就需要两台数据库的数据要实时保持一致,在这里使用MySQL的同步功能实现双机的同步复制。

实现方案

目前SparkSQL节点访问双主的元数据库主要考虑两种方案:

SparkSQL节点直接连接MySQL节点:

下图中SparkSQL节点分别连接单个MySQL节点,不同SparkSQL节点对元数据库的更改会在MySQL节点之间进行同步。

 

SparkSQL节点访问双主的元数据库主要的两种方案分析

 

 

SparkSQL节点通过MetaStore节点连接元数据库:

 

下图中SparkSQL节点分别连接多个MetaStore节点,每个MetaStore节点连接对应的MySQL节点,不同SparkSQL节点对元数据库的更改会在MySQL节点之间进行同步。

 

SparkSQL节点访问双主的元数据库主要的两种方案分析

 

上面两种SparkSQL节点访问双主的元数据库方案下,客户端获取SparkSQL服务的方式是相同的,主要通过如下方式:

 

Beeline连接

 

 

程序通过JDBC端口访问

 

Beeline方式首先通过Zookeeper集群获取SparkSQL节点信息,然后连接到SparkSQL服务节点。当连接的SparkSQL节点异常时,可以通过重试几次获取SparkSQL服务。

程序通过JDBC端口连接到对应的SparkSQL节点的方式下,如果正在连接的SparkSQL节点出现异常,可以通过在代码中进行异常捕获的方式重新获取SparkSQL服务。

下面主要对两种方案的功能可行性以及异常情况进行验证。

 

测试环境

 

MySQL:10.43.183.121和10.43.183.122两台主机

SparkSQL: 10.43.183.121和10.43.183.122两台主机

Hive MetaStoreServer: 10.43.183.121和10.43.183.122两台主机

 

测试场景

 

场景一:SparkSQL节点直接连接MySQL高可用验证

每个SparkSQL节点直接连接一个MySQL节点。验证元数据能否成功同步以及MySQL节点失效能否自动切换。

测试步骤如下:

1. 修改配置

SparkSQL配置修改如下:

 

SparkSQL节点访问双主的元数据库主要的两种方案分析

 

10.43.183.121对应的JDBC连接配置为10.43.183.121上的MySQL

10.43.183.122对应的JDBC连接配置为10.43.183.122上的MySQL

2. Beeline连接10.43.183.121节点的SparkSQL。

3. 创建表test,分别查找两个MySQL的hiveomm数据库的tbls表,可以看到test记录。表明元数据同步成功。

4. 将SparkSQL当前连接的MySQL停掉。

5. Beeline 界面执行“show tables”命令,查询异常。

6. 断开Beeline连接并多次重新连接10.43.183.121节点的SparkSQL,连接异常。

7. 用SQL URL连接SparkSQL服务!connectjdbc:hive2://10.43.183.121:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=sparkThriftServer重试若干次可以连接上SparkSQL服务,通过“show tables”命令可以查到test表。

8. 启动MySQL节点,Beeline重新连接10.43.183.121节点,可以连接到SparkSQL节点。执行“show tables”命令,可以查询到test表信息。

测试结论:

 

MySQL之间的元数据可以同步。

 

 

MySQL节点挂掉会导致Beeline无法查询。

 

 

Beeline重新连接无法连接到对应的SparkSQL节点。

 

 

Beeline通过SQL URL连接SparkSQL服务,可以在尝试一定次数之后连接到可用的SparkSQL节点。

 

 

场景二: SparkSQL节点通过HiveMetaStoreServer节点连接MySQL高可用验证

 

MetaStoreServer节点主要用于MySQL节点失效时的容错,每个MetaStoreServer节点对应一个MySQL节点,每个SparkSQL节点配置多个MetaStoreServer节点。验证元数据能否成功同步以及MySQL节点失效能否自动切换。

测试步骤如下:

1. 修改配置

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信