0806-6.2.0-如何停止CDSW的Session

2020-08-31 16:40:26 浏览数 (1)

文档编写目的

在CDSW中,启动一个Session后,任务执行完毕了,Session不会立刻停止。导致占用的资源不会被释放。本篇文档讲述如何手动或者自动停止Session方法和引擎模板删除对运行中任务的影响。

  • 测试环境

1.Redhat7.2

2.采用root用户操作

3.CM/CDH6.2.0

4.CDSW版本1.5

测试步骤

2.1删除运行中任务的引擎模板测试

如下图所示在CDSW中配置了两个Engine模板

用1vCPU/2GiB模板启动Session并运行一个Spark任务

运行中的状态

运行完成如下图

查看开启这个Session占用的资源

现在再次运行这个任务,并在运行过程中删除配置模板,看任务是否正常完成

在运行中去设置页面删除1vCPU/2GiB模板,删除后如下图。

切换过去看任务是否在继续运行,如下图,可以看到任务仍然在继续运行

任务执行成功, 该Session资源占用情况与未删除模板前一致,如下图。

2.2停止Session的方法

在官方文档中, Session的操作方法可以看到关于停止,如下图

我们可以看到,有两种方法,一种是直接点击stop来停止,如下图

还一种是输入代码来停止,我用的Python,在命令行输入exit,来停止Session

如果不手动停止的话,Session会在空闲1小时后自动停止。因为默认的Session空闲时间为60分钟。

2.3Engine环境变量配置Seesion运行时间

Engine环境变量可以在全局,Project或者Job层面来设置。

在Admin→Engine→环境变量页面添加环境变量,配置说明如下:

SESSION_MAXIMUM_MINUTES

一个Session最长能运行的最大分钟数(默认是7天,最大值35000分钟)

IDLE_MAXIMUM_MINUTES

一个Session在退出前保存空闲的最大分钟数(默认是60分钟,最大35000分钟)

JOB_MAXIMUM_MINUTES

一个job能运行的最大分钟数(默认是7天,最大35000分钟)

使用管理员用户在Engines页面,添加全局的环境变量IDLE_MAXIMUM_MINUTES 值为1(即在session空闲1分钟后自动停止)

添加环境变量后,启动一个Session来进行验证

开启一个session后,就会提示只有60秒就要自动退出了。因为开启之后没有在该会话界面做任何操作(编写代码及运行代码等),就是空闲状态。我现在再执行一个job试一下,也是一样,执行完之后就提示只有60秒要退出了,

可以看到,到设置的Session空闲时间值后Session会自动关闭,该配置生效。

SESSION_MAXIMUM_MINUTES参数测试,在配置界面添加如下配置:

配置成功后,打开一个Session运行一个超过1分钟的任务,测试该参数是否生效。

下图可以看到启动Session后,就提示一分钟后会退出。此时无论Session空闲还是忙碌都会提示1分钟后关闭会话。运行PI作业后,到了设置的1分钟阈值时Session自动关闭,任务并没有跑完,配置也生效。

测试JOB_MAXIMUM_MINUTES任务执行最大时间配置,如图将该配置设置为1分钟(即允许任务最多跑1分钟),然后执行一个超过1分钟的Job,如下设置全局配置参数:

下图可以看到Job超时了

进入到Job详情看下,也发现脚本没有执行完,结果没出来,就关闭了

总结

1.将CDSW中配置的Engine模板删除时,不影响已经运行的Session并且运行的会话不会因为模板的删除而导致资源降低。

2.在Session界面的交互式窗口栏,输入quit()或者exit能够关闭当前Session,也可以在界面上点击Stop按钮,效果与quit()和exit一样,该行为属于被动行为,无法主动关闭Session。

3.经过验证可以设置全局的环境变量IDLE_MAXIMUM_MINUTES(默认为60分钟)可以控制启动Session的空闲时间,以防止Session长时间空闲占用集群资源。

4.SESSION_MAXIMUM_MINUTES和JOB_MAXIMUM_MINUTES参数默认为7天的运行时间,为了防止Session和Job运行时间过长占用集群资源不释放,可以通过这两个参数限制作业运行时间。

5.环境变量可以全局设置,也可以针对单独的Project或者Job来设置。

0 人点赞