分布式爬虫
Scrapy单机模式
Scrapy引擎通过一调度器,将request队列中的
request请求发给下载器进行页面的爬取
Scrapy单机框架的优缺点
优点:
部署容易,架构简单快速,快速部署
缺点:
单点执行,抓取速度慢,效率低下
爬虫有明显的性能瓶颈
分布式爬虫
-
分布式系统
-
- 一个硬盘或者软件的组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统
-
分布式爬虫
-
- 多台电脑设备通过网络连接协同执行一个爬虫任务
-
分布式爬虫的优势
-
- 以比较低的成本获取更高的性能
- 可以横向扩展,突破性能瓶颈
分布式爬虫构架
分布式爬虫的关键点:
-
维护一个系统内共享的网络请求队列
-
- 保证各个节点不会执行重复的网络请求
- 各节点分别执行网络请求和数据处理实现爬取效率的提升
-
分布式爬虫框架的两种模式(主从模式和对等模式)
-
-
主从分布式爬虫:
-
- 一台专门的MASTER服务器来维护待抓取的request的队列
-
单机爬虫框架和分布式爬虫的框架:
Scrapy-Redis 分布式爬虫 属于主从的分布式爬虫
爬虫的框架:
-
Master(主节点不一定会很复杂)(用于请求队列的共享)
-
- Redis服务器维护队列
-
Slaves(用于数据下载等操作)
-
- 执行网页爬取、分析、保存
Redis数据库(非关系型数据库)
- 开源并且基于内存亦可进行持久化存储的数据库(读取数据速度快)
- 存储数据的格式为key—value
- 提供了多种语言的API
Redis数据库的特点(数据保存的手段)
- 速度快(使用c语言进行开发,并且将数据存储到内存中)
- 支持多种数据结构
- 持久化(所有数据 存储到内存中,更新键异步保存到磁盘上)
- 支持多种汇编语言
- 功能丰富(但是不可以保存二进制的数据)
搭建分布式爬虫
# 大概步骤
VMware虚拟机
Redis数据库
在centos系统安装redis数据库
首先要在虚拟机上安装centos系统并且启动网卡
进入系统后创建一个文件夹用于下载Redis数据库的安装包
命令
mkdir software
将安装时要用到的工具进行安装
sudo yum groupinstall Development tools
sudo yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-develreadline-develtk-devel gdbm-devel db4-devel libpcapdevel xzdevel
安装wget 工具
yum install wget
下载安装包
wget http://download.redis.io/releases/redis-4.0.2.tar.gz
解压安装包
tar xzf redis-4.0.2.tar.gz
进入redis-4.0.2文件
cd redis-4.0.2
进行安装:
make
make install
检查是否安装成功
进入/user/local/bin
cd /usr/local/bin
运行Redis-server
./redis-server
首先进入/root/software/redis-4.0.2/utils
cd /root/software/redis-4.0.2/utils
配置Redis文件(让其他机器可以登录数据库)
进入 /root/software/redis-4.0.2/utils
cd /root/software/redis-4.0.2/utils
查看Redis_init_script
进入 /etc/init.d
cd /etc/init.d
并将Redis_init_script拷贝至/etc/init.d并且重命名为Redis_6379
cp /root/software/redis-4.0.2/Redis_init_script ./Redis_6379
首先创建一个存放Redis的配置文件的文件件
mkdir /etc/redis
创建一个存放Redis持久化的文件夹
mkdir /var/redis
进入 /var/redis
文件中创建一个6379的文件夹
进入/etc/redis/
中
将 /root/software/redis-4.0.2/的Redis_init_script
文件 拷贝到/etc/redis/
中 并且重命名为6379.conf
打开6379.conf
对进行配置的修改一下内容:
将保护模式设置为弄
注释bind ip
,关闭绑定
完成以上操作就可以成功启动我们的数据库
我们通过本机进项连接的测试
redis-cli -h server_ip -p server _port
# server _port :端口号
# server_ip:ip地址
!!注意在数据库服务开启后不要停止界面
我们通过克隆master虚拟机进行对slave创建
通过连接命令
redis-cli -h server_ip -p server _port
们通过本机进项连接的测试
redis-cli -h server_ip -p server _port
# server _port :端口号
# server_ip:ip地址
!!注意在数据库服务开启后不要停止界面
我们通过克隆master虚拟机进行对slave创建
通过连接命令
redis-cli -h server_ip -p server _port
连接成功则表示配置成功