• WEB中调用Nutch执行JOB抓取


    参考:在Eclipse中运行Nutch


    把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)
            at org.apache.hadoop.hdfs.DFSClient.createRPCNamenode(DFSClient.java:113)
            at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:215)
            at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:177)

    是hadoop-0.20.2 & hbase-0.90.4版本问题造成的,讲hbaselib引入的包替换为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目录并没有写入权限,所以导致异常的发生。 

  • 相关阅读:
    使用MAT 分析内存泄漏实战
    测试面试题集锦----liunx与网络
    Python中request的post请求报requests.exceptions.SSLError:
    python 中requests的返回数可直接使用json
    unittest中的TestLoader使用
    3秒钟unittest入门使用
    postman做接口测试 application/x-www-form-urlencoded 格式与json格式互转
    python读取yaml文件,在unittest中使用
    python 传入任意多个参数(方法调用可传参或不传参)
    boost写的异步客户端样例代码修改为支持断开重连的代码
  • 原文地址:https://www.cnblogs.com/kofxxf/p/3848168.html
Copyright © 2020-2023  润新知