美文网首页大数据 爬虫Python AI Sql
从0到1完成nutch分布式爬虫项目实战

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

作者: TeacherAilie | 来源:发表于2019-01-09 14:41 被阅读3次

    命令提示符$表示普通用户,#表示root用户

    1. 搭建环境
    image image.gif

    选择Install

    image

    选择Next

    image image.gif

    选择语言English(English),选择Next

    image

    选择键盘U.S.English,选择Next

    image image.gif

    选择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 image.gif

    Ant配置成功

    1. 1. 安装nutch

    1. 解压缩

    进入到nutch目录下,解压缩,查看是否成功

    cd /tmp/

    tar zxvf apache-nutch-1.7-src.tar.gz -C /nutchhadoop/nutch/ 回车

    image image.gif

    运行结果

    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.gif

    运行结果

    image image.gif

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

    相关文章

      网友评论

        本文标题:从0到1完成nutch分布式爬虫项目实战

        本文链接:https://www.haomeiwen.com/subject/ayqirqtx.html