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()

posted on 2018-09-14 19:59 姜小嫌 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/jiangxiaoxian/p/9648545.html

yarn application -kill application_id yarn kill 超时任务脚本相关推荐

  1. Flink on Zeppelin 系列之:Yarn Application 模式支持

    简介:Zeppelin 如何实现并使用 Yarn Application 模式. 作者:章剑锋(简锋) 去年 Flink Forward 在讲 Flink on Zeppelin 这个项目的未来时我们 ...

  2. livy(0.5) on zeppelin(0.8)报No YARN application is found with tag问题解决

    文章目录 环境信息 代码 报错 livy日志报No YARN application is found with tag 排查 尝试远程调试 远程调试步骤 远程调试结果 尝试修改超时参数 转换思路:发 ...

  3. yarn 命令学习:yarn application

    2016-12-05 11:47:04 晨solo 阅读数 3856 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https:/ ...

  4. yarn application 命令列表

    一.yarn application 命令概览 命令参数 说明 -appStates Works with -list to filter applications based on input co ...

  5. 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 ...

  6. 【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 ...

  7. 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 ...

  8. yarn application日志查看

    Yarn application 日志查看 方式一:正在运行任务,可以在任务启动后或者在yarn application UI页面找到applicationId,然后在服务器上查看:yarn logs ...

  9. 如何查看yarn container日志 查看yarn任务所有container信息 yarn gc日志的查看和简单分析

    查看yarn任务日志 任务运行中和结束时查看container的日志 GC日志的简单分析 文章目录 一.shell和yarn基础命令准备 二.app日志查看 1. 直接使用yarn logs,可选择指 ...

  10. yarn 怎么查看有多个job在跑_flink on yarn 模式下提示yarn资源不足问题分析

    背景 在实时计算平台上通过YarnClient向yarn上提交flink任务时一直卡在那里,并在client端一直输出如下日志: (YarnClusterDescriptor.java:1036)- ...

最新文章

  1. Linux 多线程应用中编写安全的信号处理函数
  2. escape php解码,PHP对escape的字符串进行解密 、加密 | 学步园
  3. NHibernate.ADOException: cannot open connection
  4. windows server 驱动精灵_还在用Windows文件共享?我来教你一键摆脱Windows海量小文件使用和备份的噩梦...
  5. 201403-1_相反数的个数
  6. phpcmsV9首页loop文章调用顶级栏目名称
  7. java list top_Java程序员最常犯的错误盘点之Top 10
  8. python实现水仙花
  9. mysql语句没出错一直抱错_为什么我的mysql语句一直报错,找不到错误,望各位大佬指点一番...
  10. COCOS2D-X 不反复随机数
  11. HDF5: 读写速度与文件的大小
  12. 克莱姆法则(cramer法则)详解
  13. mysql用户表怎么命名_数据库表的命名规范
  14. uniapp 微信授权 登陆
  15. php公鸡五钱一只,PHP经典题:百钱百鸡问题(穷举算法)
  16. gsm无线热点数据采集服务器,GSM无线网络优化及WLAN热点分析工具开发
  17. ESP32开发路程——环境搭建、引脚、烧录、UART、ADC、WS2812、RFID、DAC、FreeRTOS、CJSON
  18. 今日头条搜索有站长平台!
  19. 基于TF-IDF的简单搜索引擎的实现
  20. 导航装备便携式综合测试工装

热门文章

  1. Android补间动画使用
  2. pve安装黑群晖直通硬盘_PVE系列二:安装黑群晖DSM系统
  3. 那些年常见的前端bug (持续更新)
  4. “云原生”技术公开课第3章:Kubernetes 核心概念
  5. 校园导游系统(C++实现,VC6.0编译,使用EasyX图形库)
  6. 高通烧录报ufs需要重新provision
  7. 【论文笔记】Neural Machine Translation by Jointly Learning to Align and Translate
  8. nginx 三级域名泛解析并指向某文件 带参数
  9. 地图比例尺与空间分辨率之间的关系_百度、google、高德 地图比例尺功能实现(算法地图分辨率和zoomlevel之间的关系)...
  10. 设备管理还在不坏不修、不停不管?这5大误区一定要避免