看了http://zha-zi.iteye.com/blog/639850的博客后
于是按着他给出的说明构造了一个实验项目:
首先是将Nutch打包成JOB,在Nutch中提供了对ant的支持,要打JOB包,就直接在项目目录下执行ant命令系统就会自动的实现对Nutch的打包,包括对plugins、nutch打包为Jar包,同时将nutch打包成Job.
这里nutch配置jar包依赖的时候用到了maven和Ivy,通过这些东东的配置对于jar包就用起来方便多了。
打包完成后可以查看项目文件夹中build目录,在该目录中有nutch的jar包和job文件,并且在该目录下还有plugins文件夹,就是对插件进行打包后的结果。
完成上述操作后,执行下面的具体操作:
1、新建一个web工程,把nutch源代码中plugins文件夹下的目录复制到src下,把nutch下src/java 中的这些包复制src下
2、把nutch中conf文件夹的所有配置文件复制到src目录下,把nutch中nutch.job文件复制到src下边
3、把nutch中lib文件夹的jar文件复制到web-inf的lib下
4、重新在src下建立一个类,用这个类去调用crawl的main()
这个调用时直接使用servlet来调用呗。
代码如下:
package com.nutch.demo; import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.util.ToolRunner; import org.apache.nutch.crawl.Crawl; import org.apache.nutch.metadata.Metadata; import org.apache.nutch.parse.Parse; import org.apache.nutch.parse.html.HtmlParser; import org.apache.nutch.protocol.Content; import org.apache.nutch.util.NutchConfiguration; public class NutchDemo extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String []args ={"urls/url","-dir","crawled","-depth","10","-topN","50"}; Configuration conf = NutchConfiguration.create(); int res; try { res = ToolRunner.run(conf, new Crawl(), args); System.exit(res); } catch (Exception e) { e.printStackTrace(); } }
在web.xml文件的配置如下所示:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>nutch_web</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>nutch_web_application</servlet-name> <servlet-class>com.nutch.demo.NutchDemo</servlet-class> </servlet> <servlet-mapping> <servlet-name>nutch_web_application</servlet-name> <url-pattern>/nutch</url-pattern> </servlet-mapping> </web-app>
请求的时候就调用http://127.0.0.1:8080/nutch就可以执行nutch的job了(我是在tomcat上测的),其中urls/url文件放到tomcat的bin目录中。
好了就这么多了,试试吧