yarn application -kill application_id yarn kill 超时任务脚本
需求:kill 掉yarn上超时的任务,实现不同队列不同超时时间的kill机制,并带有任务名的白名单功能
此为python脚本,可配置crontab使用
# _*_ coding=utf-8 _*_
# !/usr/bin/python
import re
import commands
import timerun_app_arr = []
timeout_app_arr = []
ONE_HOURE = 1
THREE_HOURE = 3
TEST_QUEUE_NAME = ['hue', 'etl-test']
ONLINE_QUEUE_NAME = ['default']
KILL_WHITE_LIST = ['org.apache.spark.sql.hive.thriftserver.HiveThriftServer2']
DINGDING_URL = 'xxx'
ding_cmd = """ curl %s -H 'Content-Type: application/json' -d '{"msgtype": "text", "text": {"content": "== YARN OVERTIME JOB KILL 告警 ==\n\n 当前时间: %s \n kill_app_id: %s \n kill_app_name: %s \n kill_app_queue: %s "}}' """
f = None
try:f = open('/home/hadoop/autokillhadoopjob/check_timeout_job.log', 'a')commond = '. /etc/profile && yarn application -list | grep "http://" |grep "RUNNING" |cut -f1,2,5'# 获得正在运行job的id,name,queue 加到 run_app_arrstatus, output = commands.getstatusoutput(commond)f.write('#' * 50 + '\n')f.write('=> start_time: %s \n' % (time.strftime('%Y-%m-%d %H:%M:%S')))if status == 0 :for line in output.split('\n'):if line.startswith('application_'):app_line = re.split('\t', line)running_app_id = app_line[0].strip()running_app_name = app_line[1].strip()app_queue = app_line[2].strip()# 根据所在队列 筛选出app加到数组中if app_queue in TEST_QUEUE_NAME or app_queue in ONLINE_QUEUE_NAME:run_app_arr.append((running_app_id, running_app_name, app_queue))else:f.write('yarn -list 执行失败. status: %s.'%(status))# 遍历所有队列的running job,如有超时加到timeout_app_arrfor run_app in run_app_arr:running_app_id = run_app[0]running_app_name = run_app[1]running_app_queue = run_app[2]commond = ". /etc/profile && yarn application -status " + running_app_id + "| grep 'Start-Time' | awk -F ':' '{print $2}'"status, output = commands.getstatusoutput(commond)if status == 0:for line in output.split('\n'):start_timestamp = line.strip()if start_timestamp.isdigit():# 计算任务耗时elapsed_time = time.time() - int(start_timestamp) / 1000cost_time = round(elapsed_time / 60 / 60, 2)f.write('=> cost_time: %sh \n' % (cost_time))# print cost_hour# 筛选出超时的job 加到数据组中/过滤掉白名单任务if running_app_name not in KILL_WHITE_LIST:if (running_app_queue in TEST_QUEUE_NAME and cost_time > ONE_HOURE) \or (running_app_queue in ONLINE_QUEUE_NAME and cost_time > THREE_HOURE):# if cost_hour > 0:# 测试f.write('=> timeout app => %s # %s # %s\n' % (running_app_id, running_app_name, running_app_queue))timeout_app_arr.append((running_app_id, running_app_name, running_app_queue))else:f.write('yarn -status 执行失败. status: %s.'%(status))if len(timeout_app_arr) == 0:f.write('=> no timeout job.\n')# kill掉超时的job 并dingding报警for kill_app in timeout_app_arr:kill_app_id = kill_app[0]kill_app_name = kill_app[1]kill_app_queue = kill_app[2]commond = '. /etc/profile && yarn application -kill ' + kill_app_idstatus, output = commands.getstatusoutput(commond)if status == 0:f.write('=> kill app sucessfully: %s # %s # %s.\n' % (kill_app_id, kill_app_name, kill_app_queue))current_time = time.strftime('%Y-%m-%d %H:%M:%S')cmd = ding_cmd % (DINGDING_URL, current_time, kill_app_id, kill_app_name, kill_app_queue)commands.getstatusoutput(cmd)else:f.write('=> kill app failed: %s # %s # %s.\n' % (kill_app_id, kill_app_name, kill_app_queue))f.write('=> stop_time: %s \n' % (time.strftime('%Y-%m-%d %H:%M:%S')))except Exception as e:f.write('=> Exception: %s \n' % (e.message))
finally:if f:f.close()
转载于:https://www.cnblogs.com/jiangxiaoxian/p/9648545.html
yarn application -kill application_id yarn kill 超时任务脚本相关推荐
- Flink on Zeppelin 系列之:Yarn Application 模式支持
简介:Zeppelin 如何实现并使用 Yarn Application 模式. 作者:章剑锋(简锋) 去年 Flink Forward 在讲 Flink on Zeppelin 这个项目的未来时我们 ...
- livy(0.5) on zeppelin(0.8)报No YARN application is found with tag问题解决
文章目录 环境信息 代码 报错 livy日志报No YARN application is found with tag 排查 尝试远程调试 远程调试步骤 远程调试结果 尝试修改超时参数 转换思路:发 ...
- yarn 命令学习:yarn application
2016-12-05 11:47:04 晨solo 阅读数 3856 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https:/ ...
- yarn application 命令列表
一.yarn application 命令概览 命令参数 说明 -appStates Works with -list to filter applications based on input co ...
- Yarn application has already ended! It might have been killed or unable to launch application master
启动命令: spark-shell --master yarn --driver-memory 4g --executor-memory 4g --num-executors 6 --executo ...
- 【Flink】Flink on yarn 支持指定 application id 吗? yarn.application.id
文章目录 1.概述 2.yarn application模式 3.yarn-session 模式 3.1 Session Mode 4.源码 4.1 yarn-session模式 4.2 yarn c ...
- spark报错: Yarn application has already ended! killed or unable to launch application master
1.美图 1.背景 背景参考:Spark执行任务卡死:SparkException: Failed to connect to driver! unable to launch application ...
- yarn application日志查看
Yarn application 日志查看 方式一:正在运行任务,可以在任务启动后或者在yarn application UI页面找到applicationId,然后在服务器上查看:yarn logs ...
- 如何查看yarn container日志 查看yarn任务所有container信息 yarn gc日志的查看和简单分析
查看yarn任务日志 任务运行中和结束时查看container的日志 GC日志的简单分析 文章目录 一.shell和yarn基础命令准备 二.app日志查看 1. 直接使用yarn logs,可选择指 ...
- yarn 怎么查看有多个job在跑_flink on yarn 模式下提示yarn资源不足问题分析
背景 在实时计算平台上通过YarnClient向yarn上提交flink任务时一直卡在那里,并在client端一直输出如下日志: (YarnClusterDescriptor.java:1036)- ...
最新文章
- Linux 多线程应用中编写安全的信号处理函数
- escape php解码,PHP对escape的字符串进行解密 、加密 | 学步园
- NHibernate.ADOException: cannot open connection
- windows server 驱动精灵_还在用Windows文件共享?我来教你一键摆脱Windows海量小文件使用和备份的噩梦...
- 201403-1_相反数的个数
- phpcmsV9首页loop文章调用顶级栏目名称
- java list top_Java程序员最常犯的错误盘点之Top 10
- python实现水仙花
- mysql语句没出错一直抱错_为什么我的mysql语句一直报错,找不到错误,望各位大佬指点一番...
- COCOS2D-X 不反复随机数
- HDF5: 读写速度与文件的大小
- 克莱姆法则(cramer法则)详解
- mysql用户表怎么命名_数据库表的命名规范
- uniapp 微信授权 登陆
- php公鸡五钱一只,PHP经典题:百钱百鸡问题(穷举算法)
- gsm无线热点数据采集服务器,GSM无线网络优化及WLAN热点分析工具开发
- ESP32开发路程——环境搭建、引脚、烧录、UART、ADC、WS2812、RFID、DAC、FreeRTOS、CJSON
- 今日头条搜索有站长平台!
- 基于TF-IDF的简单搜索引擎的实现
- 导航装备便携式综合测试工装
热门文章
- Android补间动画使用
- pve安装黑群晖直通硬盘_PVE系列二:安装黑群晖DSM系统
- 那些年常见的前端bug (持续更新)
- “云原生”技术公开课第3章:Kubernetes 核心概念
- 校园导游系统(C++实现,VC6.0编译,使用EasyX图形库)
- 高通烧录报ufs需要重新provision
- 【论文笔记】Neural Machine Translation by Jointly Learning to Align and Translate
- nginx 三级域名泛解析并指向某文件 带参数
- 地图比例尺与空间分辨率之间的关系_百度、google、高德 地图比例尺功能实现(算法地图分辨率和zoomlevel之间的关系)...
- 设备管理还在不坏不修、不停不管?这5大误区一定要避免