`

运行nutch报错:unzipBestEffort returned null

阅读更多

报错信息:fetch of http://szs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201402/t20140224_1046354.html failed with: java.io.IOException: unzipBestEffort returned null

 

完整的报错信息为:

 

2014-03-12 16:48:38,031 ERROR http.Http - Failed to get protocol output
java.io.IOException: unzipBestEffort returned null
at org.apache.nutch.protocol.http.api.HttpBase.processGzipEncoded(HttpBase.java:317)
at org.apache.nutch.protocol.http.HttpResponse.<init>(HttpResponse.java:164)
at org.apache.nutch.protocol.http.Http.getResponse(Http.java:64)
at org.apache.nutch.protocol.http.api.HttpBase.getProtocolOutput(HttpBase.java:140)
at org.apache.nutch.fetcher.Fetcher$FetcherThread.run(Fetcher.java:703)
2014-03-12 16:48:38,031 INFO  fetcher.Fetcher - fetch of http://szs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201402/t20140224_1046354.html failed with: java.io.IOException: unzipBestEffort returned null
2014-03-12 16:48:38,031 INFO  fetcher.Fetcher - -finishing thread FetcherThread, activeThreads=0

 

由此可知抛出异常的代码位于src/plugin/lib-http/src/java/org/apache/nutch/protocol/http/api/HttpBase.java(lib-http插件)类的processGzipEncoded方法的317行:

 

byte[] content;
if (getMaxContent() >= 0) {
  content = GZIPUtils.unzipBestEffort(compressed, getMaxContent());
} else {
  content = GZIPUtils.unzipBestEffort(compressed);
}

if (content == null)
  throw new IOException("unzipBestEffort returned null");  

 

nutch1.7\src\plugin\protocol-http\src\java\org\apache\nutch\protocol\http\HttpResponse.java(protocol-http插件)的164行调用了processGzipEncoded方法: 

 

readPlainContent(in);

String contentEncoding = getHeader(Response.CONTENT_ENCODING);
if ("gzip".equals(contentEncoding) || "x-gzip".equals(contentEncoding)) {
	content = http.processGzipEncoded(content, url);
} else if ("deflate".equals(contentEncoding)) {
	content = http.processDeflateEncoded(content, url);
} else {
	if (Http.LOG.isTraceEnabled()) {
		Http.LOG.trace("fetched " + content.length + " bytes from " + url);
	}
}

 

 

通过Firefox的Firebug工具可查看该URL的响应头为Content-Encoding:gzip,Transfer-Encoding:chunked

 

解决方法如下:

 

1、修改文件nutch1.7\src\java\org\apache\nutch\metadata\HttpHeaders.java,增加一个field:

 

public final static String TRANSFER_ENCODING = "Transfer-Encoding";

 
2、修改文件nutch1.7\src\plugin\protocol-http\src\java\org\apache\nutch\protocol\http\HttpResponse.java,替换第160行代码readPlainContent(in);为如下代码

 

String transferEncoding = getHeader(Response.TRANSFER_ENCODING); 
if(transferEncoding != null && "chunked".equalsIgnoreCase(transferEncoding.trim())){    	  
  readChunkedContent(in, line);  
}else{
  readPlainContent(in);  
}

 

3、http内容长度限制不能使用负值,只能使用一个大整数:

 

<property>
	<name>http.content.limit</name>
	<value>655360000</value>
</property>

 
4、因为修改了核心代码插件代码,所以需要重新编译打包发布,执行nutch1.7\build.xml的默认target:runtime  

 

cd nutch1.7
ant

 

提交BUG:

1、https://issues.apache.org/jira/browse/NUTCH-1736

2、https://github.com/apache/nutch/pull/3

 

 

 

 

 

1
1
分享到:
评论

相关推荐

    nutch入门.pdf

    为达成这一目标,Nutch需要能够每月爬取数十亿网页,维护索引,执行每秒上千次的搜索请求,并提供高质量的搜索结果,同时还要保证最低的运行成本。 与Lucene的区别:简单来说,Lucene是一个用于实现全文检索的软件...

    Nutch1.0:Nutch1.0修改版(整合中文分词)原始码修改,编译打包-修改

    然后,他们可以运行Nutch的命令行工具进行网页抓取、索引创建以及查询操作。 总的来说,这个Nutch1.0修改版体现了开源社区的力量,通过协作和共享,解决了特定语言环境下(如中文)的问题,提升了工具的适用性和...

    windows下安装nutch

    【知识点详解】 在Windows环境下安装Nutch涉及到多个...然而,需要注意的是,Nutch在类Unix环境(如Linux)下的运行通常更为稳定和高效,因此,如果你的项目允许,考虑在这样的环境中运行Nutch可能会带来更好的体验。

    Nutch:一个灵活可扩展的开源web搜索引擎

    提供的压缩文件"CN-TR-04-04.pdf"可能包含了关于Nutch项目的详细技术文档或教程,它可能涵盖了Nutch的安装、配置、运行示例以及常见问题解答等内容。通过阅读这份文档,你可以更深入地了解如何使用Nutch,以及在实际...

    qiwur-nutch:基于Apache Nutch的Web爬网程序,具有众包支持和Ajax支持

    要使用众包模式运行搜寻器: 确保您熟悉Apache Nutch 修改nutch-site.xml,将“ fetcher.fetch.mode”设置为“ crowdsourcing”,将“ nutch.master.domain”设置为运行nutch服务器的机器在任何机器上启动卫星都...

    提高nutch运行效率的原理与方法

    在提供的文件中,"提高nutch运行效率的优化方法1.png"和"提高nutch运行效率的优化方法2.png"可能是展示具体优化步骤的图表,而"提高nutch运行效率的原理.png"则可能解释了Nutch运行的基本原理,这些图像可以帮助读者...

    lucene2.4+nutch学习笔记三:lucene 在多个文本文档里找出包含一些关键字的文档

    3. **运行Nutch**:执行Nutch的命令行工具,如`bin/nutch crawl`,启动爬虫流程。 4. **搜索关键词**:Nutch完成索引后,可以通过HTTP接口或API,使用IndexSearcher搜索含有特定关键词的文档。 四、实际应用示例 ...

    Nutch配置环境\Nutch1[1].4_windows下eclipse配置图文详解.docx

    解压后,通过命令行进入Nutch目录并运行`ant`,等待构建完成。 6. **导入Eclipse项目**: 在Eclipse中新建一个Java项目,将Nutch解压后的conf目录添加到项目的构建路径中。设置默认输出文件夹为Nutch/conf。 7. *...

    nutch-windows-script:在 Windows 上运行 Nutch 的简单脚本

    这个“nutch-windows-script”项目提供了一套专为Windows环境设计的脚本,使得在Windows上运行Nutch 2.1变得更加方便。在Windows操作系统中,由于默认不支持Bash shell,因此通常需要额外的配置来执行基于Unix/Linux...

    nutch入门经典翻译1:Introduction to Nutch, Part 1: Crawling

    《Nutch入门经典翻译1:Introduction to Nutch, Part 1: Crawling》一文深入介绍了Nutch这一开源网络爬虫框架的基本概念、体系结构及其关键组件,为初学者提供了全面的理解视角。以下是对该文章核心知识点的详细解读...

    nutch框架 搜索引擎

    搭建Nutch框架涉及到多个步骤,首先需要确保服务器环境符合Nutch的运行要求,通常推荐使用Linux操作系统。具体步骤如下: 1. **环境准备**:安装Java运行环境,因为Nutch是基于Java开发的,Java版本应符合Nutch的...

    Nutch2.3.1 环境搭建

    在本文中,我们将深入探讨如何搭建Nutch2.3.1的运行环境,以便进行网页抓取和分析。 **一、系统需求** 首先,确保你的系统满足以下基本要求: 1. 操作系统:Nutch可以在Linux、Unix或Mac OS X等类Unix系统上运行,...

    Nutch程序运行环境配置

    Nutch程序运行环境配置是Java开发中的一个重要环节,特别是在Windows操作系统上进行Nutch相关的开发工作。Nutch是一个开源的Web爬虫项目,用于抓取互联网上的网页并建立索引,通常与Hadoop等大数据处理框架结合使用...

    jid3lib-0.5.4与rtf-parser nutch

    Nutch 实战:http://www.ibm.com/developerworks/cn/opensource/os-cn-nutchintro/ Nutch还需要另外两个jar文件,jid3lib-0.5.1.jar和rtf-parser.jar

    nutch-0.9 环境搭建所需最小cygwin

    Cygwin是一个在Windows上模拟Linux环境的开源软件,它提供了许多在Linux环境下才能运行的命令行工具,使得我们能够在Windows系统上执行类似Linux的操作,这对于需要在Windows系统中运行Nutch这样的基于Unix/Linux的...

    eclipse配置nutch,eclipse配置nutch

    为了使Nutch在Eclipse中正常运行,你需要修改Nutch的默认配置文件`nutch-default.xml`。具体而言,将`plugin.folders`参数改为`"./src/plugin"`,以确保Nutch能够识别到项目的插件目录。 #### 步骤5:设置URL文件 ...

    apache-nutch-1.4-bin.tar.gz

    在这个"apache-nutch-1.4-bin.tar.gz"压缩包中,包含了运行 Nutch 的所有必要组件和配置文件,适合初学者和开发者快速部署和实验。 **Nutch 的核心组成部分:** 1. **爬虫(Spider)**:Nutch 的爬虫负责在网络中...

    开发基于 Nutch 的集群式搜索引擎

    自Nutch 0.8.0版本起,它完全运行在Hadoop平台上,这使Nutch能够利用Hadoop的分布式文件系统(HDFS)以及MapReduce编程模型来实现大规模数据处理能力。Hadoop不仅提供了分布式文件存储功能,还实现了Google的...

    Windows下配置nutch

    因为 Nutch 原生设计在 Linux 环境下运行,所以在 Windows 上配置 Nutch 需要一些额外的步骤。主要有两种方法: - **在 Eclipse 中使用 Nutch**: - 创建一个新的 Java 项目。 - 导入 Nutch 源码,将 `src\java`...

    nutch2.2.1-src

    5. **启动爬虫**:运行Nutch的`bin/nutch`脚本,执行如`crawl`命令开始爬取过程。 6. **监控和调试**:观察日志文件,跟踪爬虫的运行状态,如有需要,进行问题排查和性能优化。 通过学习和研究Nutch源码,开发者...

Global site tag (gtag.js) - Google Analytics