我们都知道,假设

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. Fragment为载体可自己主动布局的CardView(GitHub上写开源项目初体验)

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 开篇废话: 前些天一直在看Android5.0 的Material Desgin,里面新增 ...

  2. LOG4J中日志级别的使用

    <logger name="demo-log" additivity="false"> <level value="${log.le ...

  3. 设置UIButton的文字显示位置、字体的大小、字体的颜色

    btn.frame = CGRectMake(x, y, width, height); [btn setTitle: @"search" forState: UIControlS ...

  4. CentOS下安装和配置MySQL-JDK-Tomcat-Nginx(个人官网环境搭建手册)

    今天,重新弄我的个人云主机的环境,准备运营自己用Java写的个人官网等网站. 服务器环境:阿里云CentOS 6.4位 包括以下脚本在内的绝大部分命令和脚本,都是我亲自执行过,靠谱的. 完整的&quo ...

  5. 手动打war包进行部署测试

    有的时候项目跑不起来但是又不知道tomcat问题还是其他问题,往往新建个项目,打成war进行部署.今天找到个好方法,手动打成war,然后进行部署测试. image.png image.png 创建一个 ...

  6. oracle 基础表 mysql版

    emp 员工表(empno 员工号/ename 员工姓名/job 工作/mgr 上级编号/hiredate 受雇日期/sal 薪金/comm 佣金/deptno 部门编号) dept 部门表(dept ...

  7. 【u004】数列

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] 有这样一种数列A1.A2.A3.--An,其中A1=0,且对任意一项Ai满足|Ai-A(i+1)|=1 ...

  8. mysqlsla slow-query常用用法

    mysqlsla -lt slow /data/mysql/testdb2-slow.log -sf -top 20 -sort t_sum > /data/mysql/my_testdb2-s ...

  9. Codeforces Round #313 (Div. 2) 560C Gerald&#39;s Hexagon(脑洞)

    C. Gerald's Hexagon time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  10. PyCharm 重构(refactor)快捷键

    提取变量(比如一个函数会返回一个变量值):ctrl + alt + v(v:variable) 将某段代码封装为一个函数(函数+函数调用):ctrl + alt + m(m:method)