如何按用户名批量终止特定用户的所有YARN应用?
批量终止特定用户的所有YARN应用
嘿,这个需求太实用了!当遇到用户提交了一堆非预期任务需要批量清理时,完全不用逐个输入应用ID,用Shell命令组合就能轻松搞定。下面给你两种靠谱的方法:
方法一:一键批量终止(直接执行)
这行命令可以直接终止用户dr.who所有处于运行状态的YARN应用:
yarn application -list -appStates RUNNING | grep dr.who | awk '{print $1}' | xargs yarn application -kill
我给你拆解下每个部分的作用:
yarn application -list -appStates RUNNING:列出所有正在运行的YARN应用;如果要包含等待中的应用(比如ACCEPTED状态),可以把RUNNING换成RUNNING,ACCEPTED,或者用ALL覆盖所有状态(不过已完成的应用没法被终止,命令会自动忽略)grep dr.who:从列表里筛选出属于用户dr.who的应用条目awk '{print $1}':提取每条结果里的第一个字段——也就是我们需要的应用IDxargs yarn application -kill:把所有提取到的应用ID作为参数,批量传给kill命令,实现一键终止
方法二:先确认再执行(更安全)
如果你担心误杀其他应用,建议先把要终止的应用ID导出到文件,确认无误后再执行终止操作:
- 导出目标应用ID到文件:
yarn application -list -appStates RUNNING | grep dr.who | awk '{print $1}' > to_kill_apps.txt
- 打开文件检查内容:
cat to_kill_apps.txt
- 确认没问题后,批量终止:
cat to_kill_apps.txt | xargs yarn application -kill
小提醒
- 确保你有足够的权限:通常需要YARN管理员权限,或者你就是应用的提交者本人
- 如果应用数量较多,命令会逐个发送终止请求,YARN会依次处理,耐心等一会儿就行
- 要是某些应用状态无法被终止(比如已经完成的),命令会返回错误提示,但不影响其他应用的终止操作
内容的提问来源于stack exchange,提问作者Antoine Ly
相关产品推荐
相关产品推荐

