In Hive on MR3, HiveServer2 runs in either shared session mode or individual session mode.
HiveServer2 in shared session mode
In shared session mode, HiveServer2 maintains a single session (by creating an MR3Session object) to be shared by all Beeline connections. This session creates a DAGAppMaster to serve all Hive queries submitted through Beeline connections, and DAGs generated from such Hive queries can send their TaskAttempts to any ContainerWorker. As a result, all Beeline connections share the entire pool of ContainerWorkers through a common DAGAppMaster.
HiveServer2 in individual session mode
In individual session mode, each Beeline connection creates its own session (by creating a new MR3Session object) not to be shared with any other Beeline connection. Each DAGAppMaster maintains its own pool of ContainerWorkers which are not visible to other sessions. As a result, there is no sharing of ContainerWorkers between Beeline connections, and in general, shared session mode achieves a better utilization of computing resources because ContainerWorkers can serve any TaskAttempt from any DAG.
Shared session mode is enabled if hive.server2.mr3.share.session
is set to true in hive-site.xml
.
To use individual session mode, hive.server2.mr3.share.session
should be set to false
and the environment variable MR3_APPLICATION_ID_TIMESTAMP
should not be set in HiveServer2 Pod.