大数据学习大数据大数据,机器学习,人工智能

从0到1完成nutch分布式爬虫项目实战

2019-01-09  本文已影响6人  大数据首席数据师

今天小编给大家分享的是一个从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

image

Username改为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
      1. 配置主机名

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分割,添加完成保存退出。

image

1. 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变为插入模式,输入以下命令

image

Esc退出编辑模式,输入: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变为插入模式,输入以下命令

image

Esc退出编辑模式,输入wq保存退出,

image

Ant配置成功

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变为插入模式,输入以下命令

image

source ~/.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变为插入模式,输入以下命令

image

Esc退出编辑模式,输入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文件夹内

image
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>

image

保存退出(注意<value>hdfs://master:9000</value>的master是你自己设置的主机名,也就是上边设置hostname)

        1. 修改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信任是否通过

image

1. 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
    1. 生成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里面有大牛已经整理好的相关学习资料,希望对你们有所帮助。

上一篇下一篇

猜你喜欢

热点阅读