我们都知道,假设

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. Genymotion加入模拟器时报“Unable to create virtual device,Server returned HTTP status code 0”

    今天也遇到这个问题,算是对这个文章的一点补充 打开图中这个文件 C:\Users\xxx\AppData\Local\Genymobile 搜索 [downloadFile] 找到这个一串URL ht ...

  2. Vim技巧之四大模式_插入模式

    Vim技巧之四大模式_插入模式 在插入模式中及时更正错误 插入-普通模式 在插入模式模式以下直接粘贴指定寄存器的内容 插入模式中做运算 用字符编码插入很常使用字符 替换已有的文本 Vim技巧之四大模式 ...

  3. Avro基础 分类: C_OHTERS 2015-02-14 19:56 310人阅读 评论(0) 收藏

    一.Avro的基本功能 1.定义了数据模式文件的语法,一般使用json文件.以及一些数据基本类型与复杂类型. 2.定义了数据序列化到文件后的数据格式,此格式可供各种语言进行读取. 3.为部分语言定义了 ...

  4. 数据类型总结——Number(数值类型)

    相关文章 简书原文:https://www.jianshu.com/p/9fb573ef10da 数据类型总结——概述:https://www.cnblogs.com/shcrk/p/9266015. ...

  5. static,const,extern,以及全局常量

    1:全局常量的定义:1:创建Header头文件,再创建与Header头文件类名相同的空文件作为.m文件,.h文件引用文件,.m文件负责定义常量 #import <UIKit/UIKit.h> ...

  6. jquery插件课程1 幻灯片、城市选择、日期时间选择、拖放、方向拖动插件

    jquery插件课程1  幻灯片.城市选择.日期时间选择.拖放.方向拖动插件 一.总结 一句话总结:都是jquery插件,都还比较小,参数(配置参数.数据)一般都是通过json传递. 1.插件配置数据 ...

  7. 真机测试时出现 could not find developer disk image问题

    解决Xcode在ipad/iphone 系统真机测试时出现could not find developer disk image问题 原因:手机系统版本比xcode版本高,sdk不支持 方法:更新Xc ...

  8. iOS8.1 编译ffmpeg和集成第三方实现直播(监控类)

    iOS8.1 编译ffmpeg和集成第三方实现直播(监控类) http://www.mamicode.com/info-detail-476094.html 一,下载并在终端中运行脚本编译ffmpeg ...

  9. Java: Map里面的键和值可以为空吗?

    在Java中,Map里面的键和值可以为空吗?我们先来看一个例子: private static void TestHashMap() { // TODO Auto-generated method s ...

  10. 【Dijkstra+邻接表求次短路】POJ Sightseeing 3463

    Language: Default Sightseeing Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 7766   Ac ...