一种云计算中自动监控分布式网络爬虫的方法

文档序号:7805287阅读:304来源:国知局
一种云计算中自动监控分布式网络爬虫的方法
【专利摘要】本发明公开了一种云计算中自动监控分布式网络爬虫的方法,属于一种云计算技术,一种云计算中自动监控分布式网络爬虫的方法,通过脚本和轮询实现实时监控nutch任务,执行并自动启动下一步操作;由两个脚本实现,脚本Ⅰ是循环执行多个抓取周期,每个周期中顺序执行每一步任务,并将执行情况写入日志;脚本Ⅱ是使用crond实时监控任务是否在执行,如果终止,检查上一步执行情况,将中断信息发送邮件给运维人员,并自动启动下一步任务继续执行。本发明通过脚本和轮询实现实时监控nutch任务执行,并自动启动下一步操作;数据抓取时间,使用方便。
【专利说明】—种云计算中自动监控分布式网络爬虫的方法
[0001]
【技术领域】
[0002] 本发明涉及一种云计算技术,具体地说是一种云计算中自动监控分布式网络爬虫的方法。
【背景技术】
[0003]云计算(cloud computing)是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。云是网络、互联网的一种比喻说法。云计算是通过网络提供可伸缩的廉价的分布式计算能力。
[0004]云计算为物联网所产生的海量数据提供了很好的存储空间,并使得实时在线处理成为可能。云计算是实现物联网的核心,运用云计算模式使得物联网中各类物品的实时动态管理和智能分析变得可能。云计算为物联网提供了可用、便捷、按需的网络访问,如果没有这个工具,物联网产生的海量信息无法传输、处理和应用。
[0005]hadoop是云计算技术的重要组成部分,它是目前云计算、大数据解决方案中最为流行和最为稳定的工具,是一个能够对大量数据进行分布式处理的软件框架。Nutch是与Hadoop结合最好的分布式网络爬虫软件,所谓网络爬虫是一个自动提取网页的程序,它是搜索引擎的重要组成。Nutch是一个由Java实现的,刚刚诞生开放源代码(open-source)的web搜索引擎。Nutch主要分为两个部分:爬虫crawler和查询searcher, Crawler主要用于从网络上抓取网页并为这些网页建立索引,Searcher主要利用这些索引检索用户的查找关键词来产生查找结果。两者之间的接口是索引,所以除去索引部分,两者之间的耦合度很低。Nutch的一步式抓取命令Crawler在执行时,经常中断。而按Nutch —个抓取周期的分步任务顺序generate、fetch、parse、updatedb单步执行则不会产生这个问题。但是分单步抓取需要实时关注任务的状态,在上一任务结束时手动启动下一任务。这种方式过于占用人力,而且在很容易出现一段时间任务停止而没被发现,从而浪费数据抓取时间。

【发明内容】

[0006]本发明的技术任务是提供一种通过脚本和轮询实现实时监控nutch任务执行,并自动启动下一步操作的一种云计算中自动监控分布式网络爬虫的方法。
[0007]本发明的技术任务是按以下方式实现的,一种云计算中自动监控分布式网络爬虫的方法,通过脚本和轮询实现实时监控nutch任务,执行并自动启动下一步操作;由两个脚本实现,脚本I是循环执行多个抓取周期,每个周期中顺序执行每一步任务,并将执行情况写入日志;脚本II是使用crond实时监控任务是否在执行,如果终止,检查上一步执行情况,将中断信息发送邮件给运维人员,并自动启动下一步任务继续执行,具体流程为:
(1)、开始,每分钟执行一次获取是否有正在执行的nutch任务;
(2)、如果没有执行nutch任务,将相关信息发送邮件给运维人员;(3)、从日志runapps.log中获取已经运行的周期数;
(4)、若已经运行的周期数没有执行完指定循环数,从日志runapps.log中获取当前未结束的批次batchid,从日志runapps.log中获取上一步任务名称;
(5)、若上一步任务名称为generate,则nutch获取,并将任务内容和结束时间写入日志runapps.log ;若上一步任务名称为fetch,则nutch解析,并将任务内容和结束时间写入日志runapps.log ;若上一步任务名称为parse,贝Unutch更新,并将任务内容和结束时间写入日志runapps.log ;若上一步任务名称为updatedb,则nutch启动下一步任务继续执行。
[0008]脚本I的伪代码如下,crawl, sh:
【权利要求】
1.一种云计算中自动监控分布式网络爬虫的方法,其特征在于通过脚本和轮询实现实时监控nutch任务,执行并自动启动下一步操作;由两个脚本实现,脚本I是循环执行多个抓取周期,每个周期中顺序执行每一步任务,并将执行情况写入日志;脚本II是使用crond实时监控任务是否在执行,如果终止,检查上一步执行情况,将中断信息发送邮件给运维人员,并自动启动下一步任务继续执行,具体流程为: (1)、开始,每分钟执行一次获取是否有正在执行的nutch任务; (2)、如果没有执行nutch任务,将相关信息发送邮件给运维人员; (3)、从日志runapps.log中获取已经运行的周期数; (4)、若已经运行的周期数没有执行完指定循环数,从日志runapps.log中获取当前未结束的批次batchid,从日志runapps.log中获取上一步任务名称; (5)、若上一步任务名称为generate,则nutch获取,并将任务内容和结束时间写入日志runapps.log ;若上一步任务名称为fetch,则nutch解析,并将任务内容和结束时间写入日志runapps.log ;若上一步任务名称为parse,则nutch更新,并将任务内容和结束时间写入日志runapps.log ;若上一步任务名称为updatedb,则nutch启动下一步任务继续执行。
2.根据权利要求1所述的一种云计算中自动监控分布式网络爬虫的方法,其特征在于脚本I的伪代码如下,crawl, sh:
for ((i=$l;i<$2;i++))
do
将时间和i写入日志runapps.log
nutch generate —topN 2
任务内容和结束时间写入日志runapps.log
获取generate生成的batchid
将 batchid 写入日志 runapps.log
nutch fetch $batchid -threads 2
任务内容和结束时间写入日志runapps.log
nutch parse $batchid
任务内容和结束时间写入日志runapps.log
nutch updatedb
任务内容和结束时间写入日志runapps.log
Done0
3.根据权利要求1所述的一种云计算中自动监控分布式网络爬虫的方法,其特征在于脚本II的伪代码如下,poll.Sh:1srunning=获取是否有正在执行的nutch任务 if [ Sisrunning=没有]
将相关信息发送邮件给运维人员
depth=从runapps.log中获取已经运行的周期数
if [ $depth没有执行完指定循环数N ]
then
batchid=从runapps.log中获取当前未结束的batchid
【文档编号】H04L12/26GK103997438SQ201410241378
【公开日】2014年8月20日 申请日期:2014年6月3日 优先权日:2014年6月3日
【发明者】范莹, 于治楼, 梁华勇 申请人:浪潮集团有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1