今天小编给大家分享的是一个从0开始到完成一个nutch分布式爬虫的实战项目,喜欢的同学可以把本文分享出去,希望对大数据感兴趣的同学有一定的帮助。
命令提示符$表示普通用户,#表示root用户
1. 搭建环境
选择Install
选择Next
选择语言English(English),选择Next
![](https://img.haomeiwen.com/i11349666/30c954eef1528df6.png)
选择键盘U.S.English,选择Next
![](https://img.haomeiwen.com/i11349666/20f40be6249562de.png)
选择Next
选择Yes,discard any data
![](https://img.haomeiwen.com/i11349666/d32891e7ac055cc1.png)
修改Hostname为hyxy1.1.cloud,选择Next
选择时区Asia/Shanghai,选择Next
![](https://img.haomeiwen.com/i11349666/4a4d73d241b64594.png)
设置root密码为hyxy123,选择Next,会提示密码过于简单,这时选择Use Anyway
选择Next
![](https://img.haomeiwen.com/i11349666/4a031ab1482fdc7b.png)
选择Write changes to disk
![](https://img.haomeiwen.com/i11349666/46968d8cd6778568.png)
选择Close选择右上角X,选择正常关闭,选择OK
在这里向大家推荐一个学习资料分享群:894951460
选择设置
左侧选择存储右侧存储树内的控制器下鼠标右键CentOS-6.5-x86_64-LiveDVD,选择删除盘片,选择删除,选择OK,选择启动
配置centos
选择Forward
选择Forward
Username改为hyxy,Full Name改为hyxy,Password改为hyxy123,Confirm Password改为hyxy123
选择Forward
鼠标右键桌面,选择Open in Terminal,打开终端,输入命令
$ifconfig
查看ip地址
网络环境及主机名设置
查看win环境的IP,按住alt左边一个键+r ,在跳出的框内出入cmd然后回车
回车后产生以下画面
在黑白框内输入ipconfig
找到一个本地连接或者无线网络连接,看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
配置完成后输入:service network restart,完成网络重启,如下图为正确启动网络。
![](https://img.haomeiwen.com/i11349666/3cdf5ac89575a13e.png)
如果有问题,修改方式如下:
1、查看ls /etc/sysconfig/network-scripts/ 下除了ifcfg-lo和ifcfg-eth0是否还有其他ifcfg-开头的文件,有使用rm -rf +文件名 删除。
2、修改网卡。
再次重启网络,service network restart。直到全部OK为止。
测试能不能ping通网管就是在eth0里配置的GATEWAY的地址。我的为192.168.1.1
![](https://img.haomeiwen.com/i11349666/2ce8023852b7e5e8.png)
此状态为正常,如果ping不通,关闭win7或者win10的防火墙,并且关闭linux的防火墙,linux使用命令service iptables stop进行关闭。
再次ping网关 ping 192.168.1.1 如果还不通,修改以下位置
改成上图的配置。并再次ping 192.168.1.1(注意该网管每个主机可能不同)直到ping通为止,此时再使用ping命令ping下baidu:命令如下:ping www.baidu.com.
注意不是每个主机在ping通网关的情况下就能平通外网,跟路由设置有关,如果遇到这种问题,只能换网络环境了。
1. 1. 1. 配置ssh服务
切换root用户输入root密码,启动sshd服务
su root
service sshd start
![](https://img.haomeiwen.com/i11349666/91538d6c40ba6398.png)
设置sshd服务开机启动
chkconfig sshd on
1. 1. 1. 配置目录
导航到home目录
创建文件夹nutchhadoop
进入根目录:
cd /
创建目录:
mkdir nutchHadoop
查看是否创建成功
ls
进入nutchhadoop文件夹内,创建文件夹jdk、ant、nutch、hadoop
一次性把四个目录都创建出来
![](https://img.haomeiwen.com/i11349666/e643c6cfad405de2.png)
- 配置主机名
hostname master
以上命令为临时修改,永久修改需要修改配置文件:
输入命令 vi /etc/syscpnfig/network回车
可以看到HOSTNAME的选项,改成master(可以自己定义名字,但是必须保证临时修改和永久修改的名字一致)
![](https://img.haomeiwen.com/i11349666/e9b97cdb3b092552.png)
修改完成后退出输入行模式:wq保存退出。
如图是linux的主机名
![](https://img.haomeiwen.com/i11349666/5ba312eb8cf7f144.png)
此时还未生效生效方式1.重启。2.使用hostname master临时生效,下次重启的时候会自动检查我们修改的配置文件生效,此时输入su root 可以看到修改后的效果
![](https://img.haomeiwen.com/i11349666/6d27b8f64b15305b.png)
查看hostname
hostname
配置域名解析的对应方式,输入如下命令:vi /etc/hosts,最后边添加,主机的IP,和刚刚改好的主机名,两者之间用tab分割,添加完成保存退出。
![](https://img.haomeiwen.com/i11349666/0c35827f224e6b04.png)
1. 1. 1. 关闭防火墙
切换到root用户
service iptables stop
chkconfig iptables off
1. 1. 安装jdk
进入/tmp目录下,解压缩
cd /tmp
查看是否有我们上传的4个文件
把压缩包解压到创建的对应的目录下
tar -zxvf jdk-8u121-linux-x64.tar.gz -C /nutchhadoop/jdk/
![](https://img.haomeiwen.com/i11349666/1674089903f2ff4a.png)
运行结果如下
编辑~/.bash_profile文件,配置环境变量
vi ~/.bash_profile
按i变为插入模式,输入以下命令
Esc退出编辑模式,输入:wq保存退出
输入
source ~/.bash_profile
如果变量配置出了问题先使用以下命令
![](https://img.haomeiwen.com/i11349666/54eeb67387ef54b9.png)
如果输入java -version后不是以上内容 而是 java -version "1.7......."或者commond not found。说明环境变量有问题,可以使用:cd $JAVA_HOME检查,如图,表示目录不对
![](https://img.haomeiwen.com/i11349666/acc703949c8ff883.png)
重新修改~/.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
![](https://img.haomeiwen.com/i11349666/e2cbc869f0b0778a.png)
过程为:
编辑~/.bash_profile文件,配置环境变量
vi ~/.bash_profile
按i变为插入模式,输入以下命令
![](https://img.haomeiwen.com/i11349666/9487fc230f2c006a.png)
Esc退出编辑模式,输入wq保存退出,
![](https://img.haomeiwen.com/i11349666/28f678d91acc4560.png)
Ant配置成功
1. 1. 安装nutch
1. 解压缩
进入到nutch目录下,解压缩,查看是否成功
cd /tmp/
tar zxvf apache-nutch-1.7-src.tar.gz -C /nutchhadoop/nutch/ 回车
![](https://img.haomeiwen.com/i11349666/ca58b4ffe777d2aa.png)
![](https://img.haomeiwen.com/i11349666/1a2cd8cb00f7648b.gif)
运行结果
进入目录
![](https://img.haomeiwen.com/i11349666/e7f45bd6cd5fc7b5.png)
修改配置文件nutch-site.xml
vi nutch-site.xml
添加
<property>
<name>http.agent.name</name>
<value>gupao spider</value>
</property>
保存退出
编译nutch
进入到
![](https://img.haomeiwen.com/i11349666/8572bfcea9941b57.png)
使用ant runtime进行编译
此时进入ant编译nutch的环节,会下载很多nutch的更新和下载一个runtime的目录,其中runtime里有很多的集成好的方法,我们使用的爬数据的方法就继承在这个目录内。次状态时间要10-20分钟,耐心等待,如果非常快速的完成,说明网络有问题,不能下载。仔细检查网络。能否ping通baidu,使用ping www.baidu.com进行检查
如图:
为正在下载。可以看到下载的字节,时间,成功等信息
配置环境变量
编辑~/.bash_profile文件,配置环境变量
vi ~/.bash_profile
按i变为插入模式,输入以下命令
source ~/.bash_profile
1. 1. 安装hadoop
进入到hadoop目录下,解压缩,查看是否成功
cd /tmp/
tar –zxvf hadoop-2.6.1.tar.gz -C /nutchhadoop/hadoop/
![](https://img.haomeiwen.com/i11349666/b618a92ea925106d.png)
运行结果
1. 1. 1. 设置环境变量
编辑~/.bash_profile文件,配置环境变量
vi ~/.bash_profile
按i变为插入模式,输入以下命令
![](https://img.haomeiwen.com/i11349666/3abe62e7f2892609.png)
Esc退出编辑模式,输入wq保存退出
输入
source ~/.bash_profile
输入hadoop version
![](https://img.haomeiwen.com/i11349666/894dc856d21dfdc9.png)
出现如下问题:
修改方式如下:
修改上图中的两个.sh结尾的文件。(hadoop-env.sh和yarn-env.sh)
vi hadoop-env.sh
在这里向大家推荐一个学习资料分享群:894951460
找到红框内容光标移动到该行,修改为对应的~/.bash_profile的java_home对应内容
修改完后保存退出,下图所示
修改yarn-env.sh
![](https://img.haomeiwen.com/i11349666/effabd31d649bafe.png)
找到如下位置
在该行下新加一行
保存退出:
1. 1. 1. 修改配置文件
进入hadoop-2.6.1文件夹内
![](https://img.haomeiwen.com/i11349666/84d4d822041eda24.png)
1. 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>
保存退出(注意<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>
保存退出
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
<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>
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信任是否通过
![](https://img.haomeiwen.com/i11349666/bcaf7d7dda172c23.png)
1. 1. 1. 启动hdfs、yarn
hdfs namenode -format
注意,集群只有第一次启动的时候使用这个命令,下次启动一定不要再次使用,否则会出现很对问题,以你们现在的水平找不到解决方法
启动hdfs
start-dfs.sh
![](https://img.haomeiwen.com/i11349666/70641df833d755e7.png)
启动yarn
start-yarn.sh
![](https://img.haomeiwen.com/i11349666/46202507211bf210.png)
输入jps命令查看是否启动成功
jps
![](https://img.haomeiwen.com/i11349666/d6835b0b34ba4c15.png)
进入nutch目录下
cd / nutchhadoop/nutch/
创建urls.txt,添加网址,保存退出
vi urls.txt
<u><u>http://nutch.apache.org/</u></u>
保存退出
在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任务执行
执行最后显示如下信息表示成功
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
![](https://img.haomeiwen.com/i11349666/cf67f429d86be66f.png)
- 生成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
移动如下位置:
添加如下内容:
保存退出后再次编译./runtime/deploy/bin/nutch readseg -dump /user/root/TestCrawl/segments/20170413001028/ /nutch/crawl_dump_text -nofetch -nogenerate -nocontent -noparse -noparsedata
查看执行结果
hadoop fs -ls /nutch
![](https://img.haomeiwen.com/i11349666/a002c7fd6b04ec45.png)
查看数据内容
hadoop fs -cat /nutch/crawl_dump_text/dump
如何学习大数据?学习没有资料?
想学习大数据开发技术,Hadoop,spark,云计算,数据分析等技术,在这里向大家推荐一个学习资料分享群:894951460里面有大牛已经整理好的相关学习资料,希望对你们有所帮助。
网友评论