Nutch+Hadoop环境搭建(3)

Nutch 配置

 

1.     单机(without Hadoop)测试

单机不想展开讲,写这个标题只是为了说明nutch也是可以单机运行的,只要不启动hadoop ,不在HDFS中crawl就行了。

 

2.     集群测试

配置 Nutch 配置文件

 

l  配置所有节点上的nutch-1.2/conf/nutch-site.xml文件

 

nutch-site.xml 文件

 

<?xml version="1.0"?> <?xml-stylesheettype="text/xsl" href="https://www.linuxidc.com/configuration.xsl"?> <!-- Putsite-specific property overrides in this file. -->

 

<configuration>

<property>

<name>http.agent.name</name>

<value>nutch-1.2</value>

<description> 爬虫和搜索此参数必须配置</description>

</property>

</configuration>

 

l  配置所有节点上的conf/crawl-urlfilter.txt文件//这是URL的过滤规则,另外有一个文件regex-urlfilter.txt,两个文件的区别跟关联网上都没有一个比较统一的说法。暂且不去理会

 

# skip file:, ftp:, & mailto: urls

 

-^(file|ftp|mailto):

 

# skip image and other suffixes we can't yet parse-/.(gif|GIF|jpg|JPG|png|PNG|ico|ICO|css|sit|eps|wmf|zip|ppt|mpg|xls|gz|rpm|tgz|mov|MOV|exe|jpeg|JPEG|bmp|BMP)$

 

# skip URLs containing certain characters asprobable queries, etc.

 

-[?*!@=]

 

# skip URLs with slash-delimited segment thatrepeats 3+ times, to break loops -.*(/[^/]+)/[^/]+/1/[^/]+/1/

 

# accept hosts in MY.DOMAIN.NAME

 

# 允许下载所有    //一般是设置这个地方,比如我想只抓取youku的视频文件,那么可以这样写 +^[a-zA-Z0-9_]*.html

 

+^

 

# skip everything else

 

-.

 

在执行爬虫之前,要创建一个本地文件,名为 urls : touch /usr/local/nutch-1.2/urls

在文件内写入要爬的网址,如  每个一行。

 

执行爬虫命令:

 

#cd /usr/local/nutch-1.2/bin

#./hadoop dfs –copyFromLocal /usr/local/nutch-1.2/urlsurls 

#./nutch crawl urls -dir data -depth 3 -topN 10

 

注意:

 

#./hadoop dfs –copyFromLocal/usr/local/nutch-1.2/urls urls

 

该命令中的最后一个参数urls指的是hdfs 中的urls 文件,也就是说,将本地的某个urls 文件复制到hdfs 中。该命令执行之后,就会在hdfs 中的/user/hadoop/ 目录下创建一个名为urls 的文件。

 

#./nutch crawl urls -dir data -depth 3 -topN 10

 

该命令就是以hdfs 中的urls 文件作为爬虫要爬的入手地址,爬取的深度为3(也就是说可以从初始网页经过3次链接点击可以到达的页面),每一次抓取的网页是排名前10的网页,nutch执行过程当中产生的数据放在HDFS文件夹data内。

出现类似如下信息,则表明nutch执行结束了。

 

到目前为止,我们已经crawl到了自己想要的网页,做好了网页分析,做好了index。为了查看结果,我们需要设置tomcat,在浏览器中查看此搜索引擎工作的结果。

 

3.     Tomcat浏览结果

1.       安装 tomcat6

Fedora的话就可以直接yum安装

 

2.      配置 tomcat 环境变量

#vim /etc/profile

在 umask 022 之前添加:

export CATALINA_HOME=/usr/share/tomcat    //这个看个人的tomcat安装路径

    #source /etc/profile

   

3.      启动tomcat6

#/etc/init.d/tomcat6  start              //版本不同启动方式可能不同,这个具体可以上网查

 

4.      在 tomcat 中配置 nutch

将 nutch-1.2 目录下的nutch-1.2.war 复制到 tomcat 安装目录下的 webapps 目录下( ***/ tomcat/webapps/ )

浏览器中输入 :8080/nutch-1.2 ,将自动解压nutch-1.2.war ,在 webapps 下生成 nutch-1.2 目录。

 

配置***/tomcat/webapps/nutch-1.2/WEB-INF/classes/ 目录下的core-site.xml 文件

 

<property>

 

<name>fs.default.name</name>

<value>hdfs://172.18.218.34:9000</value>

<description> </description>

</property>

 

配置 ***/tomcat/webapps/nutch-1.2/WEB-INF/classes/ 目录下的nutch-site.xml 文件

 

<property>

<name>http.agent.name</name>不可少,否则无搜索结果

<value>nutch-1.0</value>

<description>HTTP'User-Agent' request header.</description>

</property>

 

<property>

  //tomcat的查询目录(索引目录),属于HDFS目录

<name>searcher.dir</name>

<value>/user/hadoop/data</value>

</property>

 

按照上面的配置之后,启动tomcat ,可以成功,但是在使用中文时会发现乱码,因为NUTCH 本身页面是unicode ,而TOMCAT 给的应该是GBK ,所以有这个问题,改一下***/tomcat/conf/server.xml

   <Connector port="8080" protocol="HTTP/1.1"

              connectionTimeout="20000"

              redirectPort="8443"/>

 

改为

   <Connector port="8080" protocol="HTTP/1.1"

              connectionTimeout="20000"

              redirectPort="8443" URIEncoding='utf-8'/>

就是加了个编码。

重启 tomcat

#/etc/init.d/tomcat6 restart

 

在浏览器中输入 :8080/nutch-1.2 ,出现如下页面:

文本框中输入搜索关键词,单机“搜索”,就可以得到匹配的网页,按照网页排名依次排下来。

 

4.     常用口令

1.      hadoop  namenode -format

格式化namenode,也就是格式化HDFS文件系统

2.      start-all.sh

开始hadoop进程

3.      stop-all.sh

结束hadoop进程

4.      hadoop dfsadmin –report

报告HDFS的情况,datanode运行情况

5.      hadoop dfsadmin –safemode leave

离开安全模式,当有提示信息说处于安全模式的时候用这条指令

6.      hadoop fs  –ls  X

HDFS中的ls指令

7.      hadoop fs  –rmr  X

HDFS中的rm指令,注意的是该指令删除文件夹也不会给出提示信息

8.      hadoop fs  –copyFromLocal X  X

把文件从本地copy到HDFS,第一个是本地文件路径,第二个是DFS中的文件路径。

9.      hadoop fs  -copyToLocal X  X

把文件从HDFS copy到本地  ,第一个是DFS中的文件路径,第二个是本地路径。

10.  nutch  crawl X  –dir X  -depth X -topN X

nutch执行命令,第一个X为urls文件路径,第二个X为数据保存文件夹,第三个X是抓爬的深度,第四个X代表每层抓爬的网页数

11.  nutch  readdb X/crawldb  -stats

报告nutch执行情况,包括抓取的网页数等等,X表示data文件夹的路径

12.  nutch  readseg -dump X/segments/* X [-noparse  –nofetch  –nogenerate –noparsedata  –nocontent  -noparsetext]

把数据库中的相关数据提取到HDFS中的文本文件。第一个X表示DFS中data文件夹路径,第二个X表示把数据提取到的文件。后面的可选参数可以选择需要提取的内容。

 

结束语

这只是nutch(hadoop)系统的初步搭建,具体的功能还需要同志们去细细挖掘,nutch的话可���就只是做做crawler,做做搜索引擎,hadoop可是潜力无穷的哈。

另外,部分常规配置我参照了网上前人的资料,但都是我亲身实践过证明可行的。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/psssf.html