我们都知道,假设

hadoop job -list

获取当前正在执行的hadoop 任务,返回的结果例如以下:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd29zaGlhb3RpYW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

返回的任务中不包含任务的名称, 可是通过hadoop 管理页面是能够查看到job 的名称的。

可是现实情况是我们可能须要依据任务的名称来删除任务。

我的实现方案是这种

1. 通过获取 http://192.168.1.100:50030/jobtracker.jsp 网页

2. 解析网页获取任务名称 + job_id 的任务列表

3. 过滤出指定名称的job

4. 最后调用hadoop job -kill  <job_id>  来杀死任务

代码例如以下:

parse.py  使用python 自带的html 解析模块

from HTMLParser import HTMLParser

class MyHTMLParser(HTMLParser):
def __init__(self):
HTMLParser.__init__(self)
# self.current_tag = None
self.flag = False
self.name_flag = False def handle_starttag(self, tag, attrs):
if tag == 'td':
for name,value in attrs:
if name == 'id' and value.startswith("job_"):
self.flag = True
self.name_flag = False
break
elif name == 'id' and value.startswith("name_"):
self.flag = True
self.name_flag = True
break def handle_endtag(self, tag):
self.flag = False def handle_data(self, data):
if self.flag:
print data,
if self.name_flag:
print ' ' if __name__ == '__main__':
fp = open("./jobtracker.jsp")
data = fp.read()
my = MyHTMLParser()
my.feed(data)

主程序  kill_job.sh

用shell 实现

# 过滤待删除的任务
keyword=$1
if [ -z "$keyword" ] ; then
echo "參数不能为空"
echo "使用方法: bash kill_job.sh <keyword> "
exit
fi
curl -O http://192.168.1.100:50030/jobtracker.jsp python parse.py | grep $keyword |sort| tee job.tmp echo "---------------- start kill -------------------"
# 运行删除动作
cat ./job.tmp |sort| while read LINE
do
#echo $LINE
job_id=`echo $LINE|awk -F " " '{print $1}'| tr -d ' '`
echo "kill job -- ${job_id}"
hadoop job -kill "$job_id"
done

运行方法:

bash kill_job.sh merge_sl

merge_sl 是job 的名称

完整代码地址:

https://github.com/vearne/del_hadoop_job

版权声明:本文博客原创文章,博客,未经同意,不得转载。

从hadoop 要删除字符串匹配指定的任务的更多相关文章

  1. 1231: 删除字符串中指定的字符(Java)

    WUSTOJ 1231: 删除字符串中指定的字符 题目 原题链接 Description 明天就要英语考试了,小明明正在挑灯夜战背单词.小明明发现单词很难背,背一个忘一个.经过仔细研究,小明明发现单词 ...

  2. 【C++实现python字符串函数库】二:字符串匹配函数startswith与endswith

    [C++实现python字符串函数库]字符串匹配函数startswith与endswith 这两个函数用于匹配字符串的开头或末尾,判断是否包含另一个字符串,它们返回bool值.startswith() ...

  3. Swift3.0语言教程删除字符与处理字符编码

    Swift3.0语言教程删除字符与处理字符编码 Swift3.0语言教程删除字符 Swift3.0语言教程删除字符与处理字符编码,在字符串中,如果开发者有不需要使用的字符,就可以将这些字符删除.在NS ...

  4. 字符串匹配--Karp-Rabin算法

    主要特征 1.使用hash函数 2.预处理阶段时间复杂度O(m),常量空间 3.查找阶段时间复杂度O(mn) 4.期望运行时间:O(n+m) 本文地址:http://www.cnblogs.com/a ...

  5. tr 替换删除字符

    1.关于tr    通过使用 tr,您可以非常容易地实现 sed 的许多最基本功能.您可以将 tr 看作为 sed 的(极其)简化的变体:它可以用一个字符来替换另一个字符,或者可以完全除去一些字符.您 ...

  6. JAVA insert() 插入字符串 reverse() 颠倒 delete()和deleteCharAt() 删除字符 replace() 替换 substring() 截取子串

    insert() 插入字符串 StringBuffer insert(int index,String str) StringBuffer insert(int index,char ch) Stri ...

  7. 字符串匹配常见算法(BF,RK,KMP,BM,Sunday)

    今日了解了一下字符串匹配的各种方法. 并对sundaysearch算法实现并且单元. 字符串匹配算法,是在实际工程中经常遇到的问题,也是各大公司笔试面试的常考题目.此算法通常输入为原字符串(strin ...

  8. rest字符串匹配模式-初次实现方案

    一般的rest访问的路径如同这样的路径 http://localhost:8080/AppName/{class}/{method}/{param1}/{param2}... rest的方法分:POS ...

  9. 字符串匹配:从机器到后缀自己主动KMP

    后缀自己主动机(sam)对字符串匹配 ==== 我们已经配置了一个相对较短的模式字符串sam. 为P="abcabcacab", T[1..i]后缀.因此,它是sam最长前缀长度: ...

随机推荐

  1. Swift3.0为视图添加旋转动画_CABasicAnimation

    Swift2.3: //创建旋转动画 let anim = CABasicAnimation(keyPath: "transform.rotation") //旋转角度 anim. ...

  2. 【36.86%】【codeforces 558B】Amr and The Large Array

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  3. php json字符串转为数组或对象

    从网上查到的方法是 用get_object_vars 把类类型转换成数组 然后在用foreach  遍历即可 $array = get_object_vars($test); $json= '[{&q ...

  4. (三)Unity5.0新特性------动画的StateMachineBehaviours

    出处:http://blog.csdn.net/u010019717 author:孙广东      时间:2015.3.31 (State machine behaviours)状态机的行为在Ani ...

  5. [Javascript] Case insensitive sorting for string arrays

    We look at the default Array.prototype.sort behavior and discuss how you can do case insensitive str ...

  6. 走进windows编程的世界-----对话框、文本框、button

    1 对话框的分类  2 对话框的基本使用方式  3 对话框资源  4 有模式对话框的使用 int DialogBox( HINSTANCE hInstance, LPCTSTR lpTemplate, ...

  7. 利用Powershell获取公司内部机器的资源信息,作为企业兴许资产管理的基本途径!

    今天一个哥们问我是否用Powershell 实现.我好久没有写脚本,脚本的协作和调试还是费了一些时间,兴许调试了下.运作没有问题,大家能够參考以下的脚本来丰富您企业须要做的一些事情,脚本代码例如以下: ...

  8. Nginx+uswgi+Django部署

    详情参考: http://blog.csdn.net/a_little_snail/article/details/78045636

  9. Redis的增删改查命令总结与持久化方式

    原文:Redis的增删改查命令总结与持久化方式 Redis是用C语言实现的,一般来说C语言实现的程序"距离"操作系统更近,执行速度相对会更快. Redis使用了单线程架构,预防了多 ...

  10. Snmp linux

    http://blog.csdn.net/youngqj/article/details/7311849 http://blog.csdn.net/howema/article/details/418 ...