Nutch 22+MySQL+Solr42实现网站内容的抓取和索引.docx

上传人:b****6 文档编号:7080205 上传时间:2023-01-17 格式:DOCX 页数:9 大小:188.81KB
下载 相关 举报
Nutch 22+MySQL+Solr42实现网站内容的抓取和索引.docx_第1页
第1页 / 共9页
Nutch 22+MySQL+Solr42实现网站内容的抓取和索引.docx_第2页
第2页 / 共9页
Nutch 22+MySQL+Solr42实现网站内容的抓取和索引.docx_第3页
第3页 / 共9页
Nutch 22+MySQL+Solr42实现网站内容的抓取和索引.docx_第4页
第4页 / 共9页
Nutch 22+MySQL+Solr42实现网站内容的抓取和索引.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

Nutch 22+MySQL+Solr42实现网站内容的抓取和索引.docx

《Nutch 22+MySQL+Solr42实现网站内容的抓取和索引.docx》由会员分享,可在线阅读,更多相关《Nutch 22+MySQL+Solr42实现网站内容的抓取和索引.docx(9页珍藏版)》请在冰豆网上搜索。

Nutch 22+MySQL+Solr42实现网站内容的抓取和索引.docx

Nutch22+MySQL+Solr42实现网站内容的抓取和索引

Nutch2.2+MySQL+Solr4.2实现网站内容的抓取和索引

Nutch2.2.1发布快两月了,该版本与Nutch之前版本相比,有较大变化,特别是与MySQL联合应用的安装和配置过程有不少地方容易出错。

本人在安装过程中也遇到了不少麻烦,大多问题通过baidu和google也没有找到解决方法,自己只能通过看代码和分析日志并试错,最终搞定了所遇到的各种问题,现将重要安装和配置过程整理如下。

1.  MySQL数据库配置

l  my.ini配置

分别在[client]、[mysql]下添加

1

default-character-set=utf8

在[mysqld]下添加:

1

character-set-server=utf8

  

l  权限授予

1

2

3

mysql–uroot–pxxxx

 

GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY  "xxxx";

  

l  创建数据库与表

手动创建数据库nutch和数据表webpage【如果不想用默认的库名和表名也可在nutch安装后的相关配置文件中进行修改,见后续说明】,其中webpage的表结构如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

CREATE TABLE `webpage`(

 

`id` varchar(767) NOT NULL,

 

`headers`blob,

 

`text`longtext DEFAULT NULL,

 

`status` int(11) DEFAULT NULL,

 

`markers`blob,

 

`parseStatus`blob,

 

`modifiedTime` bigint(20) DEFAULT NULL,

 

`prevModifiedTime` bigint(20) DEFAULT NULL,

 

`score` float DEFAULT NULL,

 

`typ` varchar(32) CHARACTER SET latin1 DEFAULT NULL,

 

`batchId` varchar(32) CHARACTER SET latin1 DEFAULT NULL,

 

`baseUrl` varchar(767) DEFAULT NULL,

 

`content`longblob,

 

`title` varchar(2048) DEFAULT NULL,

 

`reprUrl` varchar(767) DEFAULT NULL,

 

`fetchInterval` int(11) DEFAULT NULL,

 

`prevFetchTime` bigint(20) DEFAULT NULL,

 

`inlinks`mediumblob,

 

`prevSignature`blob,

 

`outlinks`mediumblob,

 

`fetchTime` bigint(20) DEFAULT NULL,

 

`retriesSinceFetch` int(11) DEFAULT NULL,

 

`protocolStatus`blob,

 

`signature`blob,

 

`metadata`blob,

 

PRIMARY KEY (`id`)

 

)ENGINE=InnoDB DEFAULT CHARSET=utf8;

  

注:

表中的字段根据nutch的conf文件“gora-sql-mapping”进行设置。

同时也可通过自动方式生成数据库和表:

配置好“gora-sql-mapping”、“gora.properties”及其它文件后,首次通过运行”bin/nutchinjecturls”即可自动生成数据库和表,不过或许在自动生成的时候你会遇到问题,不过没有关系,通过及时查看hadoop.log文件你便会发现很多问题(如下图之一)与MySQL支持的数据类型、数据长度有关,只需要根据日志提示做修改、调试(可借助navicat工具像SQLServer方便操作数据库),然后再重复自动生成过程,直到成功为止。

2.  Nutch的安装与配置

1)       获取nutch2.2.x:

从官网http:

//www.apache.org/dyn/closer.cgi/nutch/下载,然后解压至本地安装目录,如本地根目录为${NUTCH_HOME};

2)       配置nutch对mysql的支持,修改${APACHE_NUTCH_HOME}/ivy/ivy.xml文件,分别:

l  将以下行的注释取消

1

default”/>

  

l  修改以下行。

从默认的

1

default"/>

 改成

1

default"/>

  

l  将以下行的注释取消

1

default" />

注:

上述第2和第3项,如果按默认的不做修改,将会在抓取网页时遇到以下错误。

Exceptioninthread“main”Java.lang.ClassNotFoundException:

org.apache.gora.sql.store.SqlStore

3)       数据库连接配置

编辑${NUTCH_HOME}/conf/gora.properties文件,注释掉默认的数据库连接配置,同时添加以下配置内容:

1

2

3

4

5

6

7

8

9

10

11

12

13

###############################

 

#DefaultMySQLproperties   #

 

###############################

 

gora.sqlstore.jdbc.driver=com.mysql.jdbc.Driver

 

gora.sqlstore.jdbc.url=jdbc:

mysql:

//localhost:

3306/nutch?

createDatabaseIfNotExist=true

 

gora.sqlstore.jdbc.user=xxxx(MySQL用户名)

 

gora.sqlstore.jdbc.password=xxxx(MySQL密码)

  

4)       数据表映射配置

主要是修改${NUTCH_HOME}/conf/gora.properties文件,这里的修改建议按照前面介绍的自动生成数据表的方法进行修改,网上说的要将primarykey 的长度从512修改成767,即

反正我照此操作没有成功(应该受编码格式的影响),最后改成搞定了。

5)       修改nutch-site配置文件

我的做法是直接将nutch-default文件另存为nutch-site,然后修改nutch-site内容,包括:

l  添加http.agent.name的值

1

2

3

4

5

6

7

 

http.agent.name

 

YourNutchSpider

 

  

l  在文件末尾添加以下内容

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

 

             http.accept.language

 

             ja-jp,en-us,en-gb,en;q=0.7,*;q=0.3

 

             ValueoftheAccept-Languagerequestheaderfield.

 

             Thisallowsselectingnon-Englishlanguageas default onetoretrieve.

 

             Itisausefulsetting for searchenginesbuild for certainnationalgroup.

 

             

 

    

 

         

 

    

 

             storage.data.store.class

 

             org.apache.gora.sql.store.SqlStore

 

             TheGoraDataStoreclass for storingandretrievingdata.

 

             Currentlythefollowingstoresareavailable:

.

 

             

 

    

 

         

 

 

         parser.character.encoding.default

 

         utf-8

 

         Thecharacterencodingtofallbackto when no otherinformation

 

         isavailable

 

  

l  特别添加以下内容

1

2

3

4

5

6

7

 

    generate.batch.id

 

    *

 

如果不添加此项内容,则通过”bin/nutchcrawlurls–threadsn–depthsn”爬取网页时,在日志中会看到以下错误:

java.lang.NullPointerException 

atorg.apache.avro.util.Utf8.(Utf8.java:

37) 

atorg.apache.nutch.crawl.GeneratorReducer.setup(GeneratorReducer.java:

100) 

atorg.apache.hadoop.mapreduce.Reducer.run(Reducer.java:

174) 

atorg.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:

649) 

atorg.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:

418) 

atorg.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:

398) 

并且“nutch-site”文件需要保存为utf-8格式,否则在执行nutch命令时会出现以下错误。

Exceptioninthread“main”java.lang.RuntimeException:

com.sun.org.apache.xerces.internal.impl.io.malformedByteSequenceException:

1字节的UTF-8序列的字节 1 无效。

6)       编译nutch2.2

在保证已安装ant的情况下(没有安装的可在网上baidu下ant的安装方法),回到nutch根目录,使用ant编译 ${NUTCH_HOME}。

如果都按上述配置一步步做了,则编译过程将顺利完成。

至此,Nutch2.2的安装也已完成,接下来就可以根据需要配置网页抓取信息,进行网页抓取了。

3.  网页抓取配置

1)       设置抓取的网站

1

2

3

cd${NUTCH_HOME}/runtime/local

mkdir -purls

echo '' >urls/seed.txt

  

2)       执行爬取操作

1

bin/nutchcrawlurls-depth3-topN5

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 简洁抽象

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1