CalcStayNight
  • Introduction
  • Contributors
  • Knowledge Works
  • Introduction
  • Contributors
  • Knowledge Works

CalcStayNight (分布式计算与爬虫平台)

CalcStayNight是我们自主开发的MapReduce分布式计算平台。并且在其上我们开发了爬虫调度模块(如加入自动防止屏蔽等功能)和一系列爬虫工具集,使其成为一个分布式爬虫系统并已经投入使用。

为什么要开发CalcStayNight?

  • 我们拥有多台服务器,它们放在不同的机房,安装不同的操作系统且其配置不太一致。Hadoop之类的平台难以部署在这种环境下。
  • 我们的服务器仍在不断增加中,我们经常需要在集群中加入新的机器。
  • 我们的需要使用多种语言进行开发,多语言支持便于我们根据情况选择最适当的开发方案。

爬虫系统特性

  • 架构:使用星型网络架构。
  • 多操作系统支持:使用Python编写,可以在非win机器上运行。
  • 多网段支持:TCP消息通信,只需要主从机之间网络互通,不需要做预先打通无密码ssh隧道等网络配置。
  • 部署方便:从机单可执行文件部署,部署非常方便。
  • 多语言支持:利用约定好输入输出格式的可执行文件或脚本作为Map或Reduce程序,从而可以使用多种语言编写。
  • 高容错性:从机当机不影响任务进行,主机则使用快照机制进行故障恢复。

爬虫工具集(即一系列和网络访问相关的Map程序和Reduce程序)

  • 基础爬虫:基本的列表式爬虫。
  • 广度优先搜索爬虫:爬虫会沿着网页中的超链接持续抓取。
  • Cookies支持:爬虫支持使用cookies以抓取需要登录才可获得的内容。
  • 代理支持:爬虫支持在网络上自动寻找可用的免费Http代理(另一模块),并使用这些代理进行抓取。
  • Ajax解析:爬虫支持在简单配置之后解析并抓取复杂的ajax页面。
  • 手机端抓取:抓取微信、即刻、今日头条等手机App中的内容。

与其他爬虫系统的对比

CalcStayNight 其他爬虫系统
部署 部署方便,只需要在主机上执行程序和在从机上执行程序即可。 可以配置在windows或linux系统上,爬虫机之间只需要网络和主机保持连通,不需要在同一局域网。 通常有严格的集群要求,需要在同一局域网网段内,为相同的linux系统,并且ssh互通。
语言支持 可以调度各种语言生成的可执行小爬虫程序,只需要输入输出满足设计要求即可。开发者可以自由地开发扩展程序。 通常对扩展程序有严格的语言要求,类要求。如必须使用java语言且必须重载一个指定类。 一旦需要利用一些其他语言的解析器,实现非常困难。
收集数据 使用一个模块进行收集数据,该模块只需要简单的开发工作以适配各种需求。 现在已有制作好的普通文件收集模块、写入HDFS、写入HBase、写入MYSQL等收集模块可选用。 通常与HDFS等分布式文件系统紧密集成,数据直接写到分布式文件系统上。
任务种类 包含丰富的预定义的任务,如对于指定URL列表进行抓取、抓取全站、抓取微博用户信息、微博搜索等。 甚至包括一些特殊的任务,如自动更换代理进行抓取等。 通常少,需要对特殊任务进行开发。
故障恢复 从机的当机不影响任务的完成,只需要重新在从机上启动即可使其继续工作。而主机拥有自动存档机制,可以在故障后通过读档使系统继续正常运行。 只有部分系统有完善的故障恢复机制,而且故障后的重新启动过程通常需要经验丰富的维护人员进行。
优先调度 支持定义任务优先级,即可以立刻分配一个高优先级的任务以促使系统优先对其进行处理。 只有部分系统支持任务优先级,任务插队等。
防屏蔽 包含两部分针对防屏蔽的措施: 系统上,系统支持爬虫机对指定网站域名的等待机制,在发现屏蔽后会启动等待而不会无休止地尝试以导致更严重的屏蔽;在爬虫程序包上,有预配置的程序包可以实现自动检测被屏蔽。 通常只用于友好的爬取等,没有完善的防屏蔽策略和措施。不支持恶意抓取。

系统界面1

系统界面2