您的位置:首页 > 数据库 > MySQL

Nutch2.2.1 笔记二 : Nutch2.2.1 + Mysql 配置,调试

2015-03-10 15:55 585 查看
Nutch2.x 使用gora做数据抽象层,底层的数据存储可以支持Mysql,HBase,Cassandra等,而1.x是基于HDFS的。Nutch2.x官方推荐的是和HBase结合,不过这里我们先配置Nutch2.2.1和Mysql运行,因为Mysql查询起来更加直观,难度也稍微低那么一点,通过和mysql的结合成功对nutch的流程理解有很大帮助,最后记录和讨论一下nutch2.2.1 + Mysql的一些不足和我发现的一个bug

Nutch2.2.1 + Mysql 结合参考官网推荐的资料 : http://nlp.solutions.asia/?p=362,按里面所说安装,配置mysql并且建立数据库和表结构,如果你的mysql安装在其他机器上,比如windows上面或者其他linux机器上面,记得要设置mysql的远程连接,默认在linux上安装的mysql的远程连接是关闭的,方法有如下两步:

(1). vim /etc/mysql/my.conf 将[mysqld]下面的bind-address = 127.0.0.1给注释掉

(2). 进入mysql执行

grant all PRIVILEGES on *.* to root@'%' identified by '110';


操作完之后重启一下mysql:

sudo service mysql restart 或者 sudo /etc/init.d/mysql restart


接下来在STS里面配置nutch2.2.1 让它和mysql结合并成功运行

1. 选中项目右键Build Path --> Configure Build Path

将右边的多标签切换到Order and Export 选中conf 目录,点击右边的Top将其置到顶部,然后点击OK



2. 更改和Mysql存储相关的一些配置

我们选中项目右键新建一个文件夹叫urls,在urls文件夹里面新建一个名叫seeds.txt的File,在seeds.txt里面写入http://www.baidu.com/ 这个文件夹是作为nutch抓取的url链接种子文件夹

接下来找到ivy/ivy.xml文件,找到

<dependency org="org.apache.gora" name="gora-sql" rev="0.1.1-incubating" conf="*->default" />

<dependency org="mysql" name="mysql-connector-java" rev="5.1.18" conf="*->default" />

将他们分别取消注释,找到

<dependency org="org.apache.gora" name="gora-core" rev="0.3" conf="*->default" />

将它修改为

<dependency org="org.apache.gora" name="gora-core" rev="0.2.1" conf="*->default" />



修改完之后进入到项目重新执行ant eclipse,然后刷新项目

编辑conf/gora.properties,将原来的默认配置注释掉加入Mysql的相关信息

###############################
# MySQL properties #
###############################
gora.sqlstore.jdbc.driver=com.mysql.jdbc.Driver
gora.sqlstore.jdbc.url=jdbc:mysql://localhost:3306/nutch?createDatabaseIfNotExist=true&useUnicode=true&autoReconnect=true
gora.sqlstore.jdbc.user=xxxxx
gora.sqlstore.jdbc.password=xxxxx


最终如下



这是你想要连接的mysql的信息,如果是远程的mysql记得前面说到的开启远程连接

3. 配置conf/nutch-site.xml文件内相关信息

该文件可以配置的信息都是根据conf/nutch-default.xml里面的配置项来的,当在nutch-site.xml中配置了某些信息后,nutch在执行的时候会用这个文件里面的信息覆盖掉default.xml里面的信息,在conf/nutch.site.xml文件里面主要是配置nutch调优的一些参数,同时还有一些参数是必须要显示的配置的,这个文件里面的内容非常重要,我们在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>
<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>


4. 运行Inject类测试是否成功配置和运行

执行src/java/org/apache/nutch/crawl/InjectorJob.java这个类该类的作用是将我们前面新建的那个urls目录当做爬虫抓取的的种子url注入到数据库中(这里我们配的是mysql,那么就会被注入到mysql中),如果不出意外应该可以成功在数据库里面看到有一条数据被写入了

右键执行InjectorJob.java类 RunAs--->RunConfigurations...



这里最常见的一个错误是

x point org.apache.nutch.net.URLNormalizer not found



这个错误经常出现,原因就是nutch没有找到插件地址,如果是在编辑器里面运行的确保在conf/nutch.site.xml文件里边plugin.folders如下对应的值为src/plugin

<property>
<name>plugin.folders</name>
<value>src/plugin</value>
</property>


而且操作了前面流程的第一步,在命令行编译执行的要把这个值改为

<property>
<name>plugin.folders</name>
<value>plugins</value>
</property>


这个错误经常出现就是因为经常忘记改这个值了

下面一篇文章还是在Nutch + Mysql结合的情况下,开始介绍分析一下Nutch的流程,可能会写2到3篇之后对Nutch的大体流程有了基本了解之后,开始Nutch + HBase的配置讲解
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Nutch