文档编写目的
在CDSW中,启动一个Session后,任务执行完毕了,Session不会立刻停止。导致占用的资源不会被释放。本篇文档讲述如何手动或者自动停止Session方法和引擎模板删除对运行中任务的影响。
- 测试环境
1.Redhat7.2
2.采用root用户操作
3.CM/CDH6.2.0
4.CDSW版本1.5
测试步骤
2.1删除运行中任务的引擎模板测试
如下图所示在CDSW中配置了两个Engine模板
![4d7396c1558903ef4b1a6486b348cb8c.png](https://img-blog.csdnimg.cn/img_convert/4d7396c1558903ef4b1a6486b348cb8c.png)
用1vCPU/2GiB模板启动Session并运行一个Spark任务
![72441e094f4d5eac1532b6817c361559.png](https://img-blog.csdnimg.cn/img_convert/72441e094f4d5eac1532b6817c361559.png)
运行中的状态
![0e5a6464e30d8c5c40340fadad3741da.png](https://img-blog.csdnimg.cn/img_convert/0e5a6464e30d8c5c40340fadad3741da.png)
运行完成如下图
![20dadde613141a079402944493a65502.png](https://img-blog.csdnimg.cn/img_convert/20dadde613141a079402944493a65502.png)
查看开启这个Session占用的资源
![3e8f907813f608f20fa12f98440440a4.png](https://img-blog.csdnimg.cn/img_convert/3e8f907813f608f20fa12f98440440a4.png)
现在再次运行这个任务,并在运行过程中删除配置模板,看任务是否正常完成
![4c28a160cb099e284d64811f0456da64.png](https://img-blog.csdnimg.cn/img_convert/4c28a160cb099e284d64811f0456da64.png)
在运行中去设置页面删除1vCPU/2GiB模板,删除后如下图。
![9187d221c7223b0c7c8268ae18570c36.png](https://img-blog.csdnimg.cn/img_convert/9187d221c7223b0c7c8268ae18570c36.png)
切换过去看任务是否在继续运行,如下图,可以看到任务仍然在继续运行
![d715f99e3038e9302100b8017a347f48.png](https://img-blog.csdnimg.cn/img_convert/d715f99e3038e9302100b8017a347f48.png)
任务执行成功, 该Session资源占用情况与未删除模板前一致,如下图。
![46e5b3c552b34f2df565028a43e2f5ec.png](https://img-blog.csdnimg.cn/img_convert/46e5b3c552b34f2df565028a43e2f5ec.png)
![d0a7172dc84d1895296d0778418ab5b6.png](https://img-blog.csdnimg.cn/img_convert/d0a7172dc84d1895296d0778418ab5b6.png)
2.2停止Session的方法
在官方文档中, Session的操作方法可以看到关于停止,如下图
![f49f417a34bd82e9603c2a84f4dbdec7.png](https://img-blog.csdnimg.cn/img_convert/f49f417a34bd82e9603c2a84f4dbdec7.png)
我们可以看到,有两种方法,一种是直接点击stop来停止,如下图
![6ab32fcbd063435963b78feb3aa2cd35.png](https://img-blog.csdnimg.cn/img_convert/6ab32fcbd063435963b78feb3aa2cd35.png)
还一种是输入代码来停止,我用的Python,在命令行输入exit,来停止Session
![3f1a9247be1c76682081e7caf09ee66a.png](https://img-blog.csdnimg.cn/img_convert/3f1a9247be1c76682081e7caf09ee66a.png)
如果不手动停止的话,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分钟后自动停止)
![d45687555476b60126a1651579421f69.png](https://img-blog.csdnimg.cn/img_convert/d45687555476b60126a1651579421f69.png)
添加环境变量后,启动一个Session来进行验证
![9a88833dbb915467874a0c7dd6d5fd32.png](https://img-blog.csdnimg.cn/img_convert/9a88833dbb915467874a0c7dd6d5fd32.png)
开启一个session后,就会提示只有60秒就要自动退出了。因为开启之后没有在该会话界面做任何操作(编写代码及运行代码等),就是空闲状态。我现在再执行一个job试一下,也是一样,执行完之后就提示只有60秒要退出了,
![3c3c281b7b9c7aa0dc76ecf4e0776ed7.png](https://img-blog.csdnimg.cn/img_convert/3c3c281b7b9c7aa0dc76ecf4e0776ed7.png)
可以看到,到设置的Session空闲时间值后Session会自动关闭,该配置生效。
![f59fead5c4bb4e712aba8875722d904c.png](https://img-blog.csdnimg.cn/img_convert/f59fead5c4bb4e712aba8875722d904c.png)
SESSION_MAXIMUM_MINUTES参数测试,在配置界面添加如下配置:
![6d00fb286c74b4e81f0e1772c4723930.png](https://img-blog.csdnimg.cn/img_convert/6d00fb286c74b4e81f0e1772c4723930.png)
配置成功后,打开一个Session运行一个超过1分钟的任务,测试该参数是否生效。
下图可以看到启动Session后,就提示一分钟后会退出。此时无论Session空闲还是忙碌都会提示1分钟后关闭会话。运行PI作业后,到了设置的1分钟阈值时Session自动关闭,任务并没有跑完,配置也生效。
![b2b11e6d71df16a45729959cb99e9eaa.png](https://img-blog.csdnimg.cn/img_convert/b2b11e6d71df16a45729959cb99e9eaa.png)
测试JOB_MAXIMUM_MINUTES任务执行最大时间配置,如图将该配置设置为1分钟(即允许任务最多跑1分钟),然后执行一个超过1分钟的Job,如下设置全局配置参数:
![94a0393147b8ee55602c632d2831e921.png](https://img-blog.csdnimg.cn/img_convert/94a0393147b8ee55602c632d2831e921.png)
下图可以看到Job超时了
![00f7f211ff746de0bc58a6794aaf484d.png](https://img-blog.csdnimg.cn/img_convert/00f7f211ff746de0bc58a6794aaf484d.png)
进入到Job详情看下,也发现脚本没有执行完,结果没出来,就关闭了
![2ecf3e86b151c380d4782ff8194c76e1.png](https://img-blog.csdnimg.cn/img_convert/2ecf3e86b151c380d4782ff8194c76e1.png)
总结
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来设置。