BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

与Julien Nioche探讨基于Apache Storm的开源爬虫流水线 StormCrawler

| 作者 Alexandre Rodrigues 关注 0 他的粉丝 ,译者 足下 关注 1 他的粉丝 发布于 2016年12月27日. 估计阅读时间: 5 分钟 | 都知道硅谷人工智能做的好,你知道 硅谷的运维技术 也值得参考吗?QCon上海带你探索其中的奥义

Julien Nioche是DigitalPebble公司的总监、PMC成员和Apache Nutch网络爬虫项目的代码提交者。StormCrawler是一组可重用的组件,可以构建基于流式框架Apache Storm的分布式网络爬虫。Julien Nioche就StormCrawler接受了我们的采访,谈了他的一些看法。

Nioche是该项目的主要贡献者,InfoQ采访他以了解更多关于StormCrawler的情况,以及在相同领域内它与其他技术相比有什么特点。

InfoQ:爬虫处理流水线在什么阶段可以受益于StormCrawler?

Julien Nioche:StormCrawler提供了代码和资源,可以用它来实现所有爬虫处理流水线的核心阶段,比如调度、获取、解析和生成索引等。它也为常用项目提供了可供调用的模块,比如Apache SolrElasticsearchMySQL或者Apache Tika等。它还有一套可扩展的功能,可以用XPathsitemaps、URL过滤器或语言识别等去做数据提取。

InfoQ:与其他爬虫技术,比如Apache Nutch和Python的Scrapy等相比较,StormCrawler有什么特点?

Nioche:StormCrawler是基于我开发Apache Nutch的经验开发的,很大程度上要归功于它,主要是一些概念(比如FetcherBolt、URL和解析过滤器的设计)和早期实现。StormCrawler实现了Nutch的功能,并且像Nutch 2.x版一样,可以使用不同的后端数据库(HBase、Cassandra等等)。

StormCrawler和Nutch之间的主要区别是,后者基于(并且催生了)Apache Hadoop项目,而且是批量驱动的。URL提取、内容解析和生成索引都是作为单独的步骤完成的。这会导致当提取URL的时候,CPU和磁盘的使用率相对较低,而网络流量高。而当解析或生成索引时则反之,CPU和磁盘的使用率高,网络流量低。

与它相反,StormCrawler基于流处理框架Apache Storm实现的,并且所有的操作都可以在同一时间进行:URL提取、解析和生成索引都不断地并行进行。这就使整个爬取过程更加高效,而且没有长尾的工作量,而这是面向批处理方法的常见问题。与Nutch不同,处理内容不一定要保存在磁盘上(但如果必要的话也可以保存在磁盘上)。也可以用StormCrawler更容易地实现更丰富的用例,比如需要低延迟的时候,或者当URL成为流不断到达的时候(比如用户生成的事件,像访问页面等)。

把两者之间进行对比,我们可以发现StormCrawler运行在一个分布式的、可扩展的环境中,而Scrapy是单进程的,即使有像Frontera那样的项目去做分布式爬虫,。

StormCrawler代表了Apache Storm的分布式和可靠性(再加上其他的功能,比如用户界面、指标框架和日志等)。

Scrapy和StormCrawler都在力图实现用户友好性和为数据抓取提供好的解决方案。

总之我认为,StormCrawler是Nutch的可扩展性和Scrapy的用户友好性的结合体。

InfoQ:爬取的工作量往往是I/O密集型的。与其他的替代品,比如Apache Spark或Apache Flink等相比,使用Apache Storm作为流处理框架的优势是什么?

Nioche:Apache Storm设计和概念简单并且高效。Spark那时还不存在。Spark对数据进行小批量流处理的方式,及其声明式的风格并不非常适合我的需求。

爬行的主要挑战之一是礼貌,这个概念的意思是爬虫访问Web服务器的频率。与大多数的流式应用不同,它的目的并不只是尽可能快地获得尽可能多的信息,而是要有礼貌地执行但同时优化吞吐量。我们要进行更好的控制,Apache Storm的机制恰好可以满足我们的需求。

InfoQ:StormCrawler接下来的版本的路线图是什么?

Nioche:StormCrawler的发展是由社区驱动的。最新发布的稳定版本是1.2,它是基于Storm的1.x版本开发的。下一个要发布的版本将包括语言识别模块,并且很有可能会提供一个新端口来支持Elasticsearch 5。在某种程度上即将发布的主要功能是实现基于Selenium的协议,这将适用于基于Ajax的网站。

查看英文原文Julien Nioche on StormCrawler, Open-Source Crawler Pipelines Backed by Apache Storm

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT