hive.server2.session.check.interval
hive.server2.idle.operation.timeout 中配置以下设置。
hive.server2.idle.session.timeout
1). hive.server2.idle.session.timeout
会话将在这段时间内未访问时关闭,以毫秒为单位;通过设置为零或负值来禁用。
例如,值“86400000”指示会话将在 1 天不活动后超时。
2). hive.server2.session.check.interval
会话/操作超时的检查间隔(以毫秒为单位),可以通过设置为零或负值来禁用该间隔。
例如,值“3600000”表示会话将每 1 小时检查一次。
3) hive.server2.idle.operation.timeout
当在此时间段内未访问时,操作将关闭,以毫秒为单位;通过设置为零来禁用。对于正值,仅检查终端状态(已完成、已取消、已关闭、错误)中的操作。对于负值,请检查所有操作,而不考虑状态。
例如,值“7200000”表示如果查询/操作仍在运行,它将在 2 小时后超时。
因此,如果您结合上述示例中的三个设置,我们可以总结以下用例:
1)如果您启动了HS2会话,例如直线,之后没有执行任何操作,则HS2将触发24个会话检查,然后再确定自上次活动以来已经过去了24小时,然后会话将被关闭
2) 如果您在直线上工作了 2 小时,然后让直线保持打开状态,之后什么都不做,HS2 将触发总共 26 个会话检查(2 个在您工作时,另外 24 个在空闲时),会话将在初始打开后 26 小时关闭。
3)如果你在直线上工作了2个小时,你开始运行一个查询,该查询将运行1小时然后返回结果,则空闲计时器实际上从数据返回的时间开始,所以如果你之后什么都不做,HS2将在另外24小时后终止会话,所以会话总共持续了27小时(2+1+24)
4)例如,如果您的查询时间超过hive.server2.idle.operation.timeout定义的2小时,则查询将被取消,因此您将全部丢失结果
5)如果hive.server2.session.check.interval = 0并且hive.server2.idle.session.timeout>0,那么它将具有与hive.server2.idle.session.timeout = 0相同的效果,因为禁用
6) 如果 hive.server2.session.check.interval > hive.server2.idle.session.timeout > 0,则实际超时将与 hive.server2.session.check.interval 相同。
例如,如果 hive.server2.session.check.interval = 20 分钟,但 hive.server2.idle.session.timeout = 10 分钟,则在检查发生时将发生超时,即 20 分钟。
基本经验法则如下:
hive.server2.session.check.interval < hive.server2.idle.operation.timeout < hive.server2.idle.session.timeout 建议的值是:
这将适用于大多数集群,但您可以根据集群的行为方式以及每个查询的运行时间更改该值。