您好,欢迎访问一九零五行业门户网

Ubuntu12.04+Nutch2.2.1+MySQL 配置笔记

日期:2013/10/13 系统 :ubuntu12.04lts jdk :1.7.0_21 nutch :2.2.1 mysql :5.5.32 ------------------------------------------------------------------------------------------------------------------------------------------------------------
日期:2013/10/13
系统:ubuntu12.04lts
jdk:1.7.0_21
nutch:2.2.1
mysql:5.5.32
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
pre1:安装配置oraclejdk
pre2:安装配置mysql      sudo apt-get install mysql-server,mysql-client
pre3:安装配置apache ant  sudo apt-get install ant
start:ubuntu下搭建nutch2.2.1,并以mysql作为数据库,utf-8为默认编码综合配置
step1:mysql配置
首先编辑 /etc/mysql/my.cnf 文件在[mysqld]下面添加以下内容:
innodb_file_format=barracudainnodb_file_per_table=trueinnodb_large_prefix=truecharacter-set-server=utf8collation-server=utf8mb4_unicode_cimax_allowed_packet=500m
然后创建数据库与数据表:
create database nutch default character set utf8mb4 default collate utf8;
create table `webpage` (`id` varchar(767) not null,`headers` blob,`text` mediumtext default null,`status` int(11) default null,`markers` blob,`parsestatus` blob,`modifiedtime` 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=innodbrow_format=compresseddefault charset=utf8;
注:表中的字段根据nutch的conf文件“gora-sql-mapping”进行设置。同时也可通过自动方式生成数据库和表:配置好“gora-sql-mapping”、“gora.properties”及其它文件后,首次通过运行”bin/nutchinject urls”即可自动生成数据库和表,不过或许在自动生成的时候你会遇到问题,不过没有关系,通过及时查看hadoop.log文件你便会发现很多问题(如下图之一)与mysql支持的数据类型、数据长度有关,只需要根据日志提示做修改、调试(可借助navicat工具像sqlserver方便操作数据库),然后再重复自动生成过程,直到成功为止。
step2:nutch配置
获取nutch2.2.1,从官网http://www.apache.org/dyn/closer.cgi/nutch/下载,然后解压至本地安装目录,如本地根目录为${apache_nutch_home}
 配置nutch对mysql的支持,修改${apache_nutch_home}/ivy/ivy.xml文件
将以下行的注释取消:
default”/>
default>
修改以下行:
default>
为:
rev=0.2.1conf=*->default/>
step3:数据库连接配置
编辑${apache_nutch_home}/conf/gora.properties文件,注释掉默认的数据库连接配置,同时添加以下配置内容:
################################ mysql configure ################################gora.sqlstore.jdbc.driver=com.mysql.jdbc.drivergora.sqlstore.jdbc.url=jdbc:mysql://localhost:3306/nutch?createdatabaseifnotexist=truegora.sqlstore.jdbc.user=xxxx(mysql用户名)gora.sqlstore.jdbc.password=xxxx(mysql密码)
step4:数据表映射配置修改${apache_nutch_home}/conf/gora.properties文件,这里的修改建议按照前面介绍的自动生成数据表的方法进行修改,网上说的要将primarykey的长度从512修改成767,即:
改:  为:
step5:nutch-site.xml配置
添加以下配置:
http.agent.nameyour nutch spiderhttp.accept.languagezh-cn, en-us,en-gb,en;q=0.7,*;q=0.3*parser.character.encoding.defaultutf-8*storage.data.store.classorg.apache.gora.sql.store.sqlstore*
特别需要注意,本人在配置过程中也遇到了:java.lang.nullpointerexception at org.apache.avro.util.utf8.(utf8.java:37) at org.apache.nutch.crawl.generatorreducer.setup(generatorreducer.java:100) at org.apache.hadoop.mapreduce.reducer.run(reducer.java:174) at org.apache.hadoop.mapred.reducetask.runnewreducer(reducetask.java:649) at org.apache.hadoop.mapred.reducetask.run(reducetask.java:418) at org.apache.hadoop.mapred.localjobrunner$job.run(localjobrunner.java:398)
解决办法就是在上述文件中另外添加一个属性:generate.batch.id*
step6:使用ant 构建nutch(关于ant的命令,这里就不说明了),只需要切换到${apache_nutch_home}下执行ant clean 然后ant 即可。构建完毕后会在${apache_nutch_home}目录下生成runtime 文件夹。
step:7 网页抓取,种子配置
创建种子文件
cd${apache_nutch_home}/runtime/local mkdir -p urls echo 'http://www.sina.com.cn' > urls/seed.txtecho 'http://www.ifeng.com' > urls/seed.txt
执行爬取操作bin/nutchcrawl urls -depth 5 -topn 10
至此,已经完成了基本的配置。
其它类似信息

推荐信息