如何访问 TDH 中 Inceptor 底层的元数据库 TxSQL
1 Inceptor 概述
在大数据生态系统中,HIVE 是离线数据仓库事实上的标准,绝大多数的大数据分析型系统或数据仓库系统,都是基于 HIVE 来构建的。
在星环的大数据平台 TDH 中,在功能上对应开源 HIVE 的服务是 Inceptor,Inceptor 底层是基于开源的 HIVE 和 Spark 整合开发而来的,其中:
Inceptor Server 对应 HIVE 的查询引擎 HS2;
Inceptor Metastore 对应 HIVE 的元数据引擎 HMS;
Inceptor Executor 对应 spark executor;
2 TxSql 概述
HIVE 的元数据引擎 HMS 在底层依赖一个 RDBMS 元数据库进行元数据的存储查询和管理,该 RDBMS 常用的有 mysql/pg/oracle 等,在实践中我们一般使用 Mysql;
Inceptor 的元数据引擎 Inceptor Metastore 在底层同样依赖一个 RDBMS 元数据库进行元数据的存储查询和管理,TDH 中这个 RDBMS 使用的是 TxSQL:
查看星环官方文档可知,TxSQL 基于开源的 PhxSQL 项目开发,是一个强一致、高可用的分布式数据库系统,它建立在 MySQL 基础上,并对其传统的主从复制方案作出了改进,将传统的主从复制机制和 Paxos 协议结合起来,从而更好的实现了高可用。PhxSQL 官方网址是https://github.com/Tencent/phxsql,查看 PhxSQL 官方文档可知,PhxSQL is a high-availability and strong-consistency MySQL cluster built on Paxos and Percona,其架构图如下:PhxSQL 集群是三层架构,对于集群中的每一个节点,部署 3 个模块(PhxSQLProxy,MySQL,PhxBinlogSvr):
PhxSQLProxy 负责请求的透传;
多个节点上的 PhxBinlogSvr 组成一个可靠的日志存储集群和可靠的 Master 信息存储集群,PhxBinlogSvr 同时承担 Agent 的责任;
Master 结点上的 PhxSync 负责将 MySQL 的 Binlog 发送到 PhxBinlogSvr;
查看 TxSQL 的底层进程,可见其跟 PhxSQL 的三次架构是一致的:
3 如何访问 TDH 中 Inceptor 底层的元数据库 TxSQL
有时候我们需要对元数据库 TxSQL 做一些运维操作,比如备份和恢复,此时如何登录进而访问 TDH 中 Inceptor 底层的元数据库 TxSQL 呢?大体上来讲,由于 TDH 中 TxSQL 是以 Docker 容器的形式来运行和管理的,我们需要使用 k8s/docker 相关命令获取 TxSQL 的端口用户名和密码,并通过 TxSQL 的相关命令获取 master 节点地址,然后通过 mysql 命令登录该 master 节点进而通过 sql 查询和操作数据。
3.1 获取 TxSQL 的端口,用户名和密码
3.2 获取 master 节点地址
注:这里显示的端口好 17000,是 TxSQL 各个节点内部通信用的,通过客户端命令如 Mysql 等登录 TxSQL 时不能使用该端口,否则会报错“ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0”,如下图所示:
3.3 通过 mysql 命令登录该 master 节点进而通过 sql 查询和操作数据
4 相关命令汇总
版权声明: 本文为 InfoQ 作者【明哥的IT随笔】的原创文章。
原文链接:【http://xie.infoq.cn/article/e479160bcfe51faa96f94ad2e】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论