Nutch 2.x在MyEclipse中爬取数据到MySQL和Solr

下面的教程主要来源于Wilco的Windows7环境下MyEclipse+Nutch2.2.1+Mysql搭建

但是教程中有些地方不对,下面是更正后的,另外加了如何配置爬取数据到Solr的部分。


一、环境准备

首先肯定是配置开发环境,这里暂时不作详细描述。

需要的环境有jdk1.7,MyEclipse,SVN,ant,以及MyEclipse下的三个插件subclipse

、IvyDe和m2e,下载地址http://subclipse.tigris.org/update_1.8.xhttp://www.apache.org/dist/ant/ivyde/updatesite以及http://download.eclipse.org/technology/m2e/releases

PS: MyEclipse 10 已经自带了Ant,IvyDe和M2e,不需要另外安装。

MyEclipse 10 企业版连接不上Congratulation Center,因此无法在线安装插件。

两个可选方案是:

1. 直接解压插件的features文件夹和plugins文件夹到MyEclipse的安装目录MyEclipse\MyEclipse

10\dropins下;

2. 或者将插件解压到任意目录,然后再MyEclipse的安装目录MyEclipse\MyEclipse

10\dropins下新建svn.lnk文件,输入path=上述解压路径,然后保存。

Ant插件需要另外下载Ant后需要到Windows\Prefrences\Ant\Runtime中配置Ant Home:

Nutch <wbr>2.x在MyEclipse中爬取数据到MySQL和Solr

配置MySQL:

主要是配置编码,将MySQL安装目录下的my.ini中的编码改为utf8:

[mysql]

default-character-set=utf8

[mysqld]

character-set-server=utf8

二、从svn检出项目,地址https://svn.apache.org/repos/asf/nutch/tags/release-2.2.1


 



 



 



 


 

Finish完成导入。

三、 

修改ivy目录下的ivysetting.xml地址http://mirrors.ibiblio.org/maven2/(只有这个地址访问是正常的,其余的地址我尝试访问不了)

四、  修改ivy目录下的ivy.xml(增加mysql访问依赖java包)

修改gora-core版本为0.2.1,并解除注释gora-sql和mysql-connector-java

 

五、  Cd

到目录执行Ant eclipse(直接在Eclipse下ant build貌似有问题)
 



 六、 

回到Eclipse工程,刷新项目,会发现目录结构已经发生变化

七、

 看到还有一个错误,是编码的问题,工程右键Properties -> Resource

->utf-8
 



 八、

 工程右键Build Path->Config Build Path->Order

and Export下选中Conf 文件夹置顶
 

九、 

修改Conf文件夹下gora.properties配置mysql
#Default MySQL properties        #

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

gora.datastore.default=org.apache.gora.sql.store.SqlStore

gora.datastore.autocreateschema=true

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

gora.sqlstore.jdbc.url=jdbc:mysql://localhost:3306/nutch?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull

gora.sqlstore.jdbc.user=root

gora.sqlstore.jdbc.password=123456

 

十、工程目录下新建文件夹urls,urls目录下新建一个文件url,里面输入要爬取的root_url,比如http://www.qq.com

 

十一、配置conf目录下nutch-site.xml

 
<property>
  <name>http.agent.name</name>
  <value>YourNutchSpider</value>
 </property>
 
 <property>
  <name>http.accept.language</name>
  <value>ja-jp, en-us,en-gb,en,zh-cn,zh-tw;q=0.7,*;q=0.3</value>
  <description>Value of the “Accept-Language” request header field.
  This allows selecting non-English language as default one to retrieve.
  It is a useful setting for search engines build for certain national group.</description>
 </property>
  
 <property>
  <name>parser.character.encoding.default</name>
  <value>utf-8</value>
  <description>The character encoding to fall back to when no other information
  is available</description>
 </property>
  
 <property>
  <name>plugin.folders</name>
  <value>src/plugin</value>
  <description>Directories where nutch plugins are located. Each
  element may be a relative or absolute path. If absolute, it is used
  as is. If relative, it is searched for on the classpath.</description>
 </property>
<property>
<span>	</span><name>generate.batch.id</name>
<span>	</span><value>*</value>
</property>
  
 <property>
  <name>storage.data.store.class</name>
  <value>org.apache.gora.sql.store.SqlStore</value>
  <description>The Gora DataStore class for storing and retrieving data.
  Currently the following stores are available: ….</description>
 </property>

 

十二、 配置完上述步骤后配置命令运行Run

Configuration选择org.apache.nutch.crawl.Crawler,参数设置urls -depth 3

-topN 5和-Dhadoop.log.dir=logs

-Dhadoop.log.file=hadoop.log

 

 

这时运行会遇到错误Exception in thread "main" java.io.IOException: Failed to

set permissions of path:

\tmp\hadoop-Administrator\mapred\staging\Administrator606301699\.staging

to 0700

 

 

十三、上述错误一般只是windows下才会遇到的,所以我们一般的做法是找到Hadoop-core-1.2.0源码中的org.apache.hadoop.fs下的FileUtil.java修改其中的CheckReturnValue方法,注释掉其中的内容

 

  private static void checkReturnValue(boolean rv, File p, FsPermission permission) throws IOException {
//    if (!rv) {
//      throw new IOException("Failed to set permissions of path: " + p + 
//                            " to " + 
//                            String.format("o", permission.toShort()));
//    }
  }


 然后编译成java包替换我们工程build/lib下的hadoop-core-1.2.0.jar。

 

另外一种方法是找到FileUtil.java编译过后的class文件,替换掉jar包中相应的class文件FileUtil.clas和FileUtil$CygPathCommand.clas(用压缩软件打开就行)

 

附上已修改编译的Hadoop-core-1.2.0.jar文件,包含单独的FileUtil.class文件,链接http://download.csdn.net/detail/cvj1991/7727299(1个积分,有钱的捧个钱场)和直接下载链接http://files.cnblogs.com/e-life/hadoop-core-1.2.0.rar


 

十四、接下来再运行就没有问题

 



 

 

 

 

这里注意,你会发现mysql数据库中很多记录除了id,status这几个基本字段有数据外其他值都是null,这是正常情况,请注意status字段,

 

status  

 记录抓取状态

    unfetched (links not yet fetched due to limits set in regex-urlfilter.txt, -TopN crawl parameters, etc.)  

    fetched (page was successfully fetched)  

    gone (that page no longer exists)  

    redir_temp (temporary redirection — see reprUrl below for more details)

    redir_perm (permanent redirection — see reprUrl below for more details)  

34     retry  

38     not modified 

这是因为我们的topN设置太小,所以很多url被限制抓取了(当然还有可能是url被regex-urllfilter过滤了),自己注意一下就好了。

 

 

Nutch爬取数据到Solr

 

1、将nutch的schema替换原solr自带的schema。

 

2、首先在solr里面新建一个nutch的core。首先复制一份collection1为nutch-core,删掉nutch-core里面的core.properties,然后到solr管理界面去Add Core,名字要和nutch-core文字一致

 

3、将nutch的schema替换原solr自带的schema

4、备份原来的索引schema,用nutch的schema替代

 

 

 

修改schema,在中间加上

 

</pre><pre name="code" class="html"><field name="_version_" type="string" stored="true" indexed="true"/>

 

5、启动solr,抓取数据。在Run configuration中配置:

 

crawl urls -dir towns -depth 10 -threads 10 -topN 10 -solr

http://192.168.125.129:8080/solr/nutch-core

 

 

配置完毕。

 

如果发生异常,可以查看./logs/hadoop.log文件。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
nutch javax.net.ssl.sslexception : could not generate dh keypair 是一个SSL异常,意味着Nutch无法生成DH密钥对。 TLS(Transport Layer Security)是一种加密协议,用于保护在网络上进行的通信。在TLS握手期间,服务器和客户端会协商加密算法和生成共享密钥对。 DH(Diffie-Hellman)密钥交换是TLS协议常用的一种加密算法。它允许服务器和客户端在不直接传递密钥的情况下,通过交换公钥来生成共享密钥。 nutch javax.net.ssl.sslexception : could not generate dh keypair 错误意味着Nutch无法生成DH密钥对。这可能是由于以下几个原因导致的: 1. Java安全性策略限制:Java默认情况下,限制了密钥长度。您可以尝试通过修改Java安全性策略文件来解决此问题。 2. 加密算法不受支持:您使用的Java版本可能不支持所需的加密算法。您可以尝试升级到较新的Java版本。 3. 随机数生成器问题:DH密钥对需要使用随机数生成器生成随机数。但是,如果随机数生成器不可用或出现故障,就会出现此错误。您可以尝试重新配置随机数生成器或更换可靠的实现。 4. SSL证书问题:此错误可能是由于证书问题引起的。您可以检查证书是否过期或不匹配,并尝试更新或更换证书。 针对这个错误,您可以逐一排查上述情况,并尝试相应的解决方法来解决该问题。如果问题仍然存在,您可能需要进一步的调查和故障排除来确定准确的原因并解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值