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