beeline、Inceptor、metastore、txsql 连接数说明

  其他常见问题
内容纲要

概要说明


Inceptor 组件经常遇到连接数相关问题,本文简单介绍一下 Inceptor 相关的各种连接的说明,以及对应的参数;

详细说明


主要包含如下几种连接的说明:

  1. beeline 或者 waterdrop 的 session 连接
  2. thrift 10000 端口的连接
  3. metastore 9083 端口的连接,以及连接池
  4. metastore -> txsql 的连接
  5. txsql MasterWorkerThread * MasterIORoutineCnt 连接数

Session 连接数量

一般翻译成会话,一个 session 里面可以有很多操作,一般来说 session 的连接数量是受端口连接数的限制。

在 Inceptor 中 10000 端口连接数的限制是通过参数 hive.server2.thrift.max.worker.threads 控制的,参数说明 Maximum number of worker threads when in TCP mode。而这个参数控制的是在 TCP 状态下ESTABLISHED 状态的数量,对其他状态的并不会检测,所以会出现 session 数量大于这个限制值的,只能说明这个参数限制了可用的 session 数量;

一般的我们说调整 Inceptor 连接数,也是调整这个参数;可以理解为调整可用 session 连接数

Thrift 连接数量

10000 端口的连接,通过参数hive.server2.thrift.max.worker.threads 控制;

Inceptor -> Metastore 连接数量

没有限制 9083 端口的连接数,但是限制了连接 metastore 的数量,hive.metastore.server.max.threads 这个参数是 metastore 最大允许连接数量;

Metastore -> TxSQL

metastore 是通过连接池去连接 txsql 的,使用的 bonecp 库实现的,可以通过 datanucleus.connection.max 控制,默认连接池只有 30 个可用 connection;

TxSQL 连接数

TxSQL 的最大连接数是通过计算得到的,是 MasterWorkerThreadMasterIORoutineCnt 的乘积。
这里需要了解一下 TxSQL 的一个特点,TxSQL 对外提供服务的是 proxy, 每个节点上都有一个 proxy, 每个 proxy 会把消息发送到 master, 而 master 是可能变化的,master 的数量只能是 1个,所以希望修改 txsql 连接数的时候,是修改 /usr/bin/txsql/etc/phxsqlproxy.conf 里的 MasterWorkerThread 数和 MasterIORoutineCnt 数。

前者为处理连接的线程池里的最大线程数量,而后者为每个线程管理的协程数量,由于对 CPU 的要求比较高,这两个值不宜设置过大。

说明

  1. 整个流程就是通过 Thrift 10000 端口与 Inceptor server 建立 Session 连接;
  2. 与 Inceptor Server 建立连接的同时,需要 inceptor-sever 与 Metastore 建立连接;
  3. 同时 metastore 与 txsql 连接时会有可用连接池限制;
  4. 最后 txsql server 本身也有最大连接数限制。

整体的连接数限制是由这几个参数共同作用的。单纯修改某个参数,只能提高某个组件的限制,并不能为整体性能带来很大的提升。

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。