从0到1完成nutch分布式爬虫项目实战
今天小编给大家分享的是一个从0开始到完成一个nutch分布式爬虫的实战项目,喜欢的同学可以把本文分享出去,希望对大数据感兴趣的同学有一定的帮助。
命令提示符$表示普通用户,#表示root用户
1. 搭建环境
image
选择Install
image选择Next
image
选择语言English(English),选择Next
image选择键盘U.S.English,选择Next
image
选择Next
image选择Yes,discard any data
image修改Hostname为hyxy1.1.cloud,选择Next
image选择时区Asia/Shanghai,选择Next
image设置root密码为hyxy123,选择Next,会提示密码过于简单,这时选择Use Anyway
image选择Next
image选择Write changes to disk
image image选择Close选择右上角X,选择正常关闭,选择OK
image在这里向大家推荐一个学习资料分享群:894951460
选择设置
左侧选择存储右侧存储树内的控制器下鼠标右键CentOS-6.5-x86_64-LiveDVD,选择删除盘片,选择删除,选择OK,选择启动
配置centos
image选择Forward
image选择Forward
imageUsername改为hyxy,Full Name改为hyxy,Password改为hyxy123,Confirm Password改为hyxy123
image选择Forward
鼠标右键桌面,选择Open in Terminal,打开终端,输入命令
$ifconfig
查看ip地址
image网络环境及主机名设置
查看win环境的IP,按住alt左边一个键+r ,在跳出的框内出入cmd然后回车
image回车后产生以下画面
image在黑白框内输入ipconfig
image找到一个本地连接或者无线网络连接,看IP地址是多少,上图所示,我的是无线网络IP地址为192.168.1.242
所以我如果想让VM下的linux上网必须修改linux的网络的eth0位该网段的IP(网段指的是IP前三个数字,如我的win环境是192.168.1.242,那么我的网段是192.168.1。所以linux IP需要配置成192.168.1.x。并且GATEWAY改成192.168.1.1)。如下图
输入 vi /etc/sysconfig/network-scripts/ifcfg-eth0
image配置完成后输入:service network restart,完成网络重启,如下图为正确启动网络。
image如果有问题,修改方式如下:
1、查看ls /etc/sysconfig/network-scripts/ 下除了ifcfg-lo和ifcfg-eth0是否还有其他ifcfg-开头的文件,有使用rm -rf +文件名 删除。
2、修改网卡。
image再次重启网络,service network restart。直到全部OK为止。
测试能不能ping通网管就是在eth0里配置的GATEWAY的地址。我的为192.168.1.1
image此状态为正常,如果ping不通,关闭win7或者win10的防火墙,并且关闭linux的防火墙,linux使用命令service iptables stop进行关闭。
再次ping网关 ping 192.168.1.1 如果还不通,修改以下位置
image改成上图的配置。并再次ping 192.168.1.1(注意该网管每个主机可能不同)直到ping通为止,此时再使用ping命令ping下baidu:命令如下:ping www.baidu.com.
image注意不是每个主机在ping通网关的情况下就能平通外网,跟路由设置有关,如果遇到这种问题,只能换网络环境了。
1. 1. 1. 配置ssh服务
切换root用户输入root密码,启动sshd服务
su root
service sshd start
image设置sshd服务开机启动
chkconfig sshd on
1. 1. 1. 配置目录
导航到home目录
创建文件夹nutchhadoop
进入根目录:
cd /
创建目录:
mkdir nutchHadoop
查看是否创建成功
ls
进入nutchhadoop文件夹内,创建文件夹jdk、ant、nutch、hadoop
image一次性把四个目录都创建出来
image- 配置主机名
hostname master
以上命令为临时修改,永久修改需要修改配置文件:
输入命令 vi /etc/syscpnfig/network回车
image可以看到HOSTNAME的选项,改成master(可以自己定义名字,但是必须保证临时修改和永久修改的名字一致)
image修改完成后退出输入行模式:wq保存退出。
如图是linux的主机名
image此时还未生效生效方式1.重启。2.使用hostname master临时生效,下次重启的时候会自动检查我们修改的配置文件生效,此时输入su root 可以看到修改后的效果
image查看hostname
hostname
配置域名解析的对应方式,输入如下命令:vi /etc/hosts,最后边添加,主机的IP,和刚刚改好的主机名,两者之间用tab分割,添加完成保存退出。
image1. 1. 1. 关闭防火墙
切换到root用户
service iptables stop
chkconfig iptables off
1. 1. 安装jdk
进入/tmp目录下,解压缩
cd /tmp
image查看是否有我们上传的4个文件
把压缩包解压到创建的对应的目录下
tar -zxvf jdk-8u121-linux-x64.tar.gz -C /nutchhadoop/jdk/
image运行结果如下
image编辑~/.bash_profile文件,配置环境变量
vi ~/.bash_profile
按i变为插入模式,输入以下命令
imageEsc退出编辑模式,输入:wq保存退出
输入
source ~/.bash_profile
如果变量配置出了问题先使用以下命令
image如果输入java -version后不是以上内容 而是 java -version "1.7......."或者commond not found。说明环境变量有问题,可以使用:cd $JAVA_HOME检查,如图,表示目录不对
image重新修改~/.bash_profile的JAVA_HOME的目录
Jdk配置成功
1. 1. 安装ant
进入到ant目录下,解压缩,查看是否成功
cd /tmp/
tar zxvf apache-ant-1.9.7-bin.tar.gz -C /nutchhadoop/ant/
ls
image过程为:
image编辑~/.bash_profile文件,配置环境变量
vi ~/.bash_profile
按i变为插入模式,输入以下命令
imageEsc退出编辑模式,输入wq保存退出,
imageAnt配置成功
1. 1. 安装nutch
1. 解压缩
进入到nutch目录下,解压缩,查看是否成功
cd /tmp/
tar zxvf apache-nutch-1.7-src.tar.gz -C /nutchhadoop/nutch/ 回车
image image
运行结果
image进入目录
image修改配置文件nutch-site.xml
vi nutch-site.xml
添加
<property>
<name>http.agent.name</name>
<value>gupao spider</value>
</property>
image
保存退出
编译nutch
进入到
image使用ant runtime进行编译
此时进入ant编译nutch的环节,会下载很多nutch的更新和下载一个runtime的目录,其中runtime里有很多的集成好的方法,我们使用的爬数据的方法就继承在这个目录内。次状态时间要10-20分钟,耐心等待,如果非常快速的完成,说明网络有问题,不能下载。仔细检查网络。能否ping通baidu,使用ping www.baidu.com进行检查
如图:
image为正在下载。可以看到下载的字节,时间,成功等信息
配置环境变量
编辑~/.bash_profile文件,配置环境变量
vi ~/.bash_profile
按i变为插入模式,输入以下命令
imagesource ~/.bash_profile
1. 1. 安装hadoop
进入到hadoop目录下,解压缩,查看是否成功
cd /tmp/
tar –zxvf hadoop-2.6.1.tar.gz -C /nutchhadoop/hadoop/
image运行结果
image
1. 1. 1. 设置环境变量
编辑~/.bash_profile文件,配置环境变量
vi ~/.bash_profile
按i变为插入模式,输入以下命令
imageEsc退出编辑模式,输入wq保存退出
输入
source ~/.bash_profile
输入hadoop version
image出现如下问题:
修改方式如下:
image修改上图中的两个.sh结尾的文件。(hadoop-env.sh和yarn-env.sh)
vi hadoop-env.sh
image在这里向大家推荐一个学习资料分享群:894951460
找到红框内容光标移动到该行,修改为对应的~/.bash_profile的java_home对应内容
image修改完后保存退出,下图所示
image修改yarn-env.sh
image找到如下位置
image在该行下新加一行
image保存退出:
1. 1. 1. 修改配置文件
进入hadoop-2.6.1文件夹内
image1. 1. 1. 1. 修改core-site.xml文件
cd /nutchhadoop/hadoop/hadoop-2.6.1
vim etc/hadoop/core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
</configuration>
image
保存退出(注意<value>hdfs://master:9000</value>的master是你自己设置的主机名,也就是上边设置hostname)
- 修改hdfs-site.xml文件
cd /nutchhadoop/hadoop/hadoop-2.6.1
$vim etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
image
保存退出
1. 1. 1. 1. 修改mapred-site.xml文件
复制
cd /nutchhadoop/hadoop/hadoop-2.6.1/etc/hadoop/
cp mapred-site.xml.template mapred-site.xml
编辑mapred-site.xml
vi mapred-site.xml
image
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
保存退出
1. 1. 1. 1. 修改yarn-site.xml文件
cd /nutchhadoop/hadoop/hadoop-2.6.1/etc/hadoop/
vi yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
image
1. 1. 1. 设置ssh信任
使用命令:cd ~
[root@mast1 ~]$ ssh-keygen -t rsa
直接4部回车
配置秘钥完成后,把公钥发送到所有的对方主机。
[root@mast1 ~]$ ssh-copy-id -i /root/.ssh/id_rsa.pub master
以上的master同样是自己设置的linux的主机名,就是hostname设置那一步
关闭当前终端,验证ssh信任是否通过
image1. 1. 1. 启动hdfs、yarn
hdfs namenode -format
注意,集群只有第一次启动的时候使用这个命令,下次启动一定不要再次使用,否则会出现很对问题,以你们现在的水平找不到解决方法
image启动hdfs
start-dfs.sh
image启动yarn
start-yarn.sh
image输入jps命令查看是否启动成功
jps
image进入nutch目录下
cd / nutchhadoop/nutch/
创建urls.txt,添加网址,保存退出
vi urls.txt
<u><u>http://nutch.apache.org/</u></u>
image保存退出
在hdfs上创建目录
hadoop fs -mkdir /nutch
将urls.txt提交到hdfs中
hadoop fs -put urls.txt /nutch
查看是否提交成功
hadoop fs -cat /nutch/urls.txt
1. 抓取数据
1. 执行抓取
进入到/nutchhadoop/nutch/apache-nutch-1.7目录
cd /nutchhadoop/nutch/apache-nutch-1.7
执行抓取
hadoop jar ./runtime/deploy/apache-nutch-1.7.job org.apache.nutch.crawl.Crawl /nutch/ -dir TestCrawl -depth 1 -topN 1
浏览器中输入<u><u>http://192.168.1.156:8088</u></u>
查看mapreduce任务执行
image执行最后显示如下信息表示成功
17/04/05 11:35:32 INFO client.RMProxy: Connecting to ResourceManager at /0.0.0.0:8032
17/04/05 11:35:32 INFO crawl.LinkDb: LinkDb: finished at 2017-04-05 11:35:32, elapsed: 00:01:37
17/04/05 11:35:32 INFO crawl.Crawl: crawl finished: TestCrawl
在hdfs中查看抓取结果
hadoop fs -ls /user/hyxy/TestCrawl
image- 生成txt文件
执行
cd /nutchhadoop/nutch/apache-nutch-1.7
./runtime/deploy/bin/nutch readseg -dump /user/root/TestCrawl/segments/20190108161042 /nutch/crawl_dump_text -nofetch -nogenerate -nocontent -noparse -noparsedata
如果此步骤产生错误表示nutch需要配置java_home,配置如下
vi runtime/deploy/bin/nutch
移动如下位置:
image添加如下内容:
image保存退出后再次编译./runtime/deploy/bin/nutch readseg -dump /user/root/TestCrawl/segments/20170413001028/ /nutch/crawl_dump_text -nofetch -nogenerate -nocontent -noparse -noparsedata
image查看执行结果
hadoop fs -ls /nutch
image查看数据内容
hadoop fs -cat /nutch/crawl_dump_text/dump
image如何学习大数据?学习没有资料?
想学习大数据开发技术,Hadoop,spark,云计算,数据分析等技术,在这里向大家推荐一个学习资料分享群:894951460里面有大牛已经整理好的相关学习资料,希望对你们有所帮助。