从hadoop 要删除字符串匹配指定的任务
我们都知道,假设
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 要删除字符串匹配指定的任务的更多相关文章
- 1231: 删除字符串中指定的字符(Java)
WUSTOJ 1231: 删除字符串中指定的字符 题目 原题链接 Description 明天就要英语考试了,小明明正在挑灯夜战背单词.小明明发现单词很难背,背一个忘一个.经过仔细研究,小明明发现单词 ...
- 【C++实现python字符串函数库】二:字符串匹配函数startswith与endswith
[C++实现python字符串函数库]字符串匹配函数startswith与endswith 这两个函数用于匹配字符串的开头或末尾,判断是否包含另一个字符串,它们返回bool值.startswith() ...
- Swift3.0语言教程删除字符与处理字符编码
Swift3.0语言教程删除字符与处理字符编码 Swift3.0语言教程删除字符 Swift3.0语言教程删除字符与处理字符编码,在字符串中,如果开发者有不需要使用的字符,就可以将这些字符删除.在NS ...
- 字符串匹配--Karp-Rabin算法
主要特征 1.使用hash函数 2.预处理阶段时间复杂度O(m),常量空间 3.查找阶段时间复杂度O(mn) 4.期望运行时间:O(n+m) 本文地址:http://www.cnblogs.com/a ...
- tr 替换删除字符
1.关于tr 通过使用 tr,您可以非常容易地实现 sed 的许多最基本功能.您可以将 tr 看作为 sed 的(极其)简化的变体:它可以用一个字符来替换另一个字符,或者可以完全除去一些字符.您 ...
- JAVA insert() 插入字符串 reverse() 颠倒 delete()和deleteCharAt() 删除字符 replace() 替换 substring() 截取子串
insert() 插入字符串 StringBuffer insert(int index,String str) StringBuffer insert(int index,char ch) Stri ...
- 字符串匹配常见算法(BF,RK,KMP,BM,Sunday)
今日了解了一下字符串匹配的各种方法. 并对sundaysearch算法实现并且单元. 字符串匹配算法,是在实际工程中经常遇到的问题,也是各大公司笔试面试的常考题目.此算法通常输入为原字符串(strin ...
- rest字符串匹配模式-初次实现方案
一般的rest访问的路径如同这样的路径 http://localhost:8080/AppName/{class}/{method}/{param1}/{param2}... rest的方法分:POS ...
- 字符串匹配:从机器到后缀自己主动KMP
后缀自己主动机(sam)对字符串匹配 ==== 我们已经配置了一个相对较短的模式字符串sam. 为P="abcabcacab", T[1..i]后缀.因此,它是sam最长前缀长度: ...
随机推荐
- MySQL之SQL mode——检查官
原文:MySQL之SQL mode--检查官 MySQL升级后代码出bug? 前段时间,测试的MySQL服务器进行了一次升级,从MySQL5.6升级到了MySQL5.7.以为是简单的升级,不会影响到代 ...
- angular表单知识点
原文 https://www.jianshu.com/p/c772d143e1fc 大纲 1.对表单的理解 2.模板驱动表单(Template Driven Forms) 3.响应式表单(Reacti ...
- (十)RabbitMQ消息队列-高可用集群部署实战
原文:(十)RabbitMQ消息队列-高可用集群部署实战 前几章讲到RabbitMQ单主机模式的搭建和使用,我们在实际生产环境中出于对性能还有可用性的考虑会采用集群的模式来部署RabbitMQ. Ra ...
- Perl读写Excel简单操作
Perl读写Excel简单操作 使用模块 Spreadsheet::ParseExcel Spreadsheet::WriteExcel 读Excel #!/usr/bin/perl -w use s ...
- 【54.08%】【BZOJ 1941】Hide and Seek
Time Limit: 16 Sec Memory Limit: 162 MB Submit: 919 Solved: 497 [Submit][Status][Discuss] Descript ...
- 怎样收缩超大的SharePoint_Config数据库
前言 在已经执行了2年多的SharePointserver上,发现SharePoint_Config的数据库文件越来越大,已经达到90几个GB,收缩能够减小20几个GB,可是一周以后又会恢复到90几个 ...
- js进阶正则表达式13RegExp对象方法(RegExp对象的方法:compile,test,exec)(子表达式 var reg1=/([a-z]+)\d/)
js进阶正则表达式13RegExp对象方法(RegExp对象的方法:compile,test,exec)(子表达式 var reg1=/([a-z]+)\d/) 一.总结 1.RegExp对象有三个方 ...
- http://lists.mysql.com/mysql
http://lists.mysql.com/mysql http://www.ehowstuff.com/how-to-fix-mysql-database-error-cant-create-da ...
- Android使用READ_CONTACTS读取手机联系人
实例代码: package com.example.readcontacts; import java.io.InputStream; import java.util.ArrayList; impo ...
- Method and apparatus for loading a segment register in a microprocessor capable of operating in multiple modes
A microprocessor contains an address generation unit, including a segment block, for loading descrip ...