Java教程

分布式爬虫部署,爬虫需要什么样的服务器配置,现在爬虫岗位都要会这个

本文主要是介绍分布式爬虫部署,爬虫需要什么样的服务器配置,现在爬虫岗位都要会这个,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

####

做分布式爬虫和搜索引擎对于服务器配置有什么要求?

实验室要做主题爬虫,附带简单的搜索查询功能,现在要租用10~20台服务器,不知道什么配置好。
我们之前使用了三台服务器(租用的阿里云),用nutch1.7+hdfs爬取8000个URL(两层深度)用了两个多小时,第三层达到了40万用了3天还没完全爬完,感觉很慢。
服务器配置如下:
- 服务器A:主节点CPU 4核,内存32G,20Mbps(峰值)公网带宽(按流量)
- 服务器B,C:CPU 1核,2G内存,1Mbps公网带宽(固定带宽)
其中服务器A既做主节点又做从节点,服务器B,C只做从节点。
我有几点困惑:
1.制约爬取速度的,是带宽还是cpu的处理能力?我看任务日志,在nutch流程中fetch(连接并下载网页)这一步耗时最长,占据了绝大部分时间,是不是意味着带宽是主要瓶颈?
2.关于一台2核4G1M的配置和2台1核2G1M的配置,哪个更好?为什么?(阿里云的阿里云推荐配置https://www.aliyun.com/easybuy)
3.如果租用10~20台服务器,配置如何选择?使用标准配置还是加带宽,带宽如何选择

####

首先,最重要的一点,你需要一点Money。大概多少呢?那你得先搞清楚Money是用来干啥的。一是用来租云服务器;二是用来买代理。云服务器的用途显而易见;代理则是用来动态切换IP,避免被封。好,假设我们需要不间断爬一周,带宽1M,数据盘100G。阿里云,1C1G实例来一个,ecs.t5-lc1m1.small,关了公网IP,¥24.36一周;(同配置t5一周18.48)IP代理,快代理私密代理均匀提取,3~5分钟 * 2500个/天,¥120一周。然后稍稍改改代码,关掉延时,扔上服务器跑呗。

#####

1. 买一个vps。通过web方式,给vps装上操作系统,如ubuntu。这个供应商会有专门教程。2. 用ssh 登录到vps上,然后把你的代码放上去。然后运行“nohup python ./youcode.py &”,于是你的crawler就会持续运行下去。将转到的数据存在文件里,这个是你代码里写的。3. 退出ssh。过了几天几个星期,ssh登录上去看看抓了多少。然后scp回自己的电脑分析。

####

页面爬取总数已经确定(30w±),接下来需要确定的是:页面每天都需要爬一遍还是说每天只爬其中某一部分即可。这里我们以最大上限来假设,每天爬30w页面(假设已经考虑了目标的反爬机制、代理池什么的都已经弄好),那么需要测算的就是单位时间单核多线程的正常工作效率是多少(能爬多少页面)。也即:a.不限网速下,单位内存及CPU最高使用率下能够爬多少个页面,设为N。b.额定网速下,内存及CPU有闲置资源时能够爬多少个页面,设为M。若基于M/N的爬取速度,都能满足每天爬30w的需求,就可以用b假设的网速,a假设的硬件配置。这里你可以选择弹性云,先用最小配置测试,若不满足需求,逐渐增加配置。

###

记得选个可以换ip的云主机,因为ip可能被封。地理位置选距离你的抓取对象物理距离近的。选小配置的,不够用扩容就行。

###

https://zhuanlan.zhihu.com/p/89548664

 

 

###

需要一个单独的redis服务器

安卓redis

启动redis,

验证一下redis是可以连接的,

###

redis 搭建完

接着我们来搭建数据库的服务器

把 MongoDB 给装上

先连接到数据库的服务器上

下载 mongoDB

创建个 db 文件夹

开启 mongodb
这里顺便把 bind_ip 设置一下

这样才能被远程访问

使用本地连接试试,验证可以连接数据库,

#####

接着我们需要在
爬虫服务器安装 Python3 环境

slave-02 和 slave-03 服务器

同上安装 python3

ok
环境搭起来了

####

我们把它改成适用分布式的

将 Pipeline 中的数据库地址配置成
我们创建的 mongodb 数据库地址

接着在 setting 中配置
redis 调度和去重

再设置一下延迟访问

设置delay有起码两个好处, 一个是对被爬对象表示礼貌, 另一个是爬的太快,很多服务器会封ip,或限制访问。

 

搞完了之后

将虚拟环境中的库打包一下,pip freeze > requirement.txt

接着把项目

都扔到爬虫服务器上去

连接到爬虫服务器

可以看到刚刚传来的文件

把刚刚在虚拟环境中
生成的第三方库列表

在服务器上一顿安装


其它两台爬虫服务器

和上面一样安装所需要的库

都安装完之后

就终于可以都 TM 跑起来了

#####

4台机器开始一顿爬取

可以看到 mongodb 都监听到了
这几台服务器的连接了

我们连到 redis 看看

可以看到scrapy-redis生成的键

可以看到

redis 在调度着请求的消息队列
以及过滤重复的请求

再连接到 mongodb 看看

统计一下爬取到的数据,发现数据都是增加的,

###

ok
以上就是分布式爬虫的
搭建及部署的过程了

当然了

数据库还可以搭建一下集群
数据库之间的连接最好设置账户
进行安全访问等

主要还是让你了解这个过程中

分布式爬虫的搭建和使用
以及体会它的可扩展性和高效性

###

 

 

######

这篇关于分布式爬虫部署,爬虫需要什么样的服务器配置,现在爬虫岗位都要会这个的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!