跳到主要内容

HiveServer2 模式

在 HivePlus 中,HiveServer2 可以运行在共享会话模式或独立会话模式。

共享会话模式下的 HiveServer2​

在共享会话模式下,HiveServer2 维护一个会话(通过创建一个 MR3Session 对象),供所有 Beeline 连接共享。此会话创建一个 DAGAppMaster 来处理所有通过 Beeline 连接提交的 Hive 查询,并且从这些 Hive 查询生成的 DAG 可以将 TaskAttempts 发送到任何 ContainerWorker。因此,所有 Beeline 连接通过一个共同的 DAGAppMaster 共享整个 ContainerWorker 池。

shared.session

独立会话模式下的 HiveServer2​

在独立会话模式下,每个 Beeline 连接创建自己的会话(通过创建一个新的 MR3Session 对象),不与其他任何 Beeline 连接共享。每个 DAGAppMaster 维护自己的 ContainerWorker 池,这些资源对其他会话不可见。因此,Beeline 连接之间不存在 ContainerWorker 的共享。通常,共享会话模式能够更好地利用计算资源,因为 ContainerWorker 可以为任何 DAG 中的任何 TaskAttempt 服务。

individual.session

如果 hive-site.xml 中 hive.server2.mr3.share.session 设置为 true,则启用共享会话模式。要使用独立会话模式,应将 hive.server2.mr3.share.session 设置为 false,且不应在 HiveServer2 Pod 中设置环境变量 MR3_APPLICATION_ID_TIMESTAMP。