首页 > 代码库 > WEB中调用Nutch执行JOB抓取

WEB中调用Nutch执行JOB抓取

把nutch的源代码导入到eclipse工程自定义抓取任务。

下载源码:

http://svn.apache.org/repos/asf/nutch/

从svn下载想要的nutch源码,这里选择nutch-1.1

编译源码:

使用ant编译源代码,编译成功,可以看到多了一个build目录,其中有plugins目录及nutch-1.1.job文件

 

新建WEB工程

新建web工程org.apache.nutch.web,执行以下操作

 

1、      把nutch源代码的src/java 目录复制到web工程的src目录

2、      把nutch源代码的src/conf目录复制到web工程的src目录

3、      把nutch源代码的src/lib目录复制到web工程的WEB-INF/lib目录

4、      把编译的plugins目录复制到web工程的src目录

5、      在web工程src新建目录job,把编译的nutch-1.1.job文件复制到src/job

6、      在web工程src新建目录test,建立测试类,用这个类去调用crawl的main()

package org.apache.nutch;import org.apache.nutch.crawl.Crawl;public class Main {    public static void main(String[] args) {        String[] arg = { "/urls/url.txt", "-dir", "crawled", "-depth", "10", "-topN",                "50" };        try {            Crawl.main(arg);        } catch (Exception e) {            e.printStackTrace();        }    }}

 

 

Note:

1、      Nutch使用hadoop调度任务,使用前要编辑conf目录下的core-site.xml、hdfs-site.xml、mapred-site.xml等hadoop配置文件。

2、      Nutch-1.1中没有hbase的jar文件,需另下载并设置hbase的配置文件,这里用hbase-0.94.jar

 

FAQ:

这是一位网友收集的hadoop,hbase,zookeeper错误日志及部分解决办法,以备以后遇到问题作为参考之用。

1、  hadoop-0.20.2 & hbase-0.90.4集群启动错误问题解决:

问题如下:org.apache.hadoop.ipc.RPC$VersionMismatch: Protocol org.apache.hadoop.hdfs.protocol.ClientProtocol version mismatch. (client = 43, server = 41) 

        at org.apache.hadoop.ipc.RPC.getProxy(RPC.java:364)
        atorg.apache.hadoop.hdfs.DFSClient.createRPCNamenode(DFSClient.java:113)
        atorg.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:215)
        atorg.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:177)

是hadoop-0.20.2& hbase-0.90.4版本问题造成的,讲hbase\lib引入的包替换为hadoop-0.20.2-core.jar即可

2、  org.apache.hadoop.security.AccessControlException:Permission denied: user=pc2000, access=WRITE

 

因为Eclipse使用hadoop插件提交作业时,会默认以 pc2000(计算机名)身份去将作业写入hdfs文件系统中,对应的也就是 HDFS 上的/user/xxx ,  由于 pc2000 用户对hadoop目录并没有写入权限,所以导致异常的发生。