我已经设置了一个新的群集(在Windows上使用HDP),我遇到了一个我以前见过的新问题。
当我从hadoop-examples jar运行一个简单的字数统计问题时,MapreduceV2作业失败并出现以下错误
5/05/16 18:58:29 INFO mapreduce.Job: Task Id : attempt_1431802381254_0001_r_000000_0, Status : FAILED
Error: org.apache.hadoop.mapreduce.task.reduce.Shuffle$ShuffleError: error in shuffle in fetcher#15
现在,当我转到Application Master跟踪器并深入研究日志时,我发现reducer正在期待一个gzip文件,但映射器输出不是
2015-05-16 18:45:20,864 WARN [fetcher#1] org.apache.hadoop.mapreduce.task.reduce.Fetcher: Failed to shuffle output of attempt_1431791182314_0011_m_000000_0 from <url>:13562
java.io.IOException: not a gzip file
当我专门钻进Map阶段日志时,我看到了这个
2015-05-16 18:45:09,532 WARN [main] org.apache.hadoop.io.compress.zlib.ZlibFactory: Failed to load/initialize native-zlib library
2015-05-16 18:45:09,532 INFO [main] org.apache.hadoop.io.compress.CodecPool: Got brand-new compressor [.gz]
2015-05-16 18:45:09,532 WARN [main] org.apache.hadoop.mapred.IFile: Could not obtain compressor from CodecPool
我的core-site.xml
中有以下配置<property>
<name>io.compression.codecs</name>
<value>org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.BZip2Codec</value>
<description>A list of the compression codec classes that can be used for compression/decompression.</description>
</property>
和mapred-site.xml
<property>
<name>mapred.compress.map.output</name>
<value>true</value>
</property>
<property>
<name>mapred.map.output.compression.codec</name>
<value>org.apache.hadoop.io.compress.GzipCodec</value>
</property>
<property>
<name>mapred.output.compression.type</name>
<value>BLOCK</value>
</property>
<property>
<name>mapred.output.compress</name>
<value>true</value>
</property>
<property>
<name>mapred.output.compression.codec</name>
<value>org.apache.hadoop.io.compress.GzipCodec</value>
</property>
现在我意识到这指向本机zlib dll加载中的错误,因此我运行了作业覆盖选项以在不进行压缩的情况下运行,并且 工作。
我从zlib site下载了zlib.dll并将其放在Hadoop / bin,C:\ system32和C:\ SystemWOW64文件夹中并重新启动了群集服务,但我仍然遇到同样的错误。不知道为什么。我会很感激任何想法进一步调试并解决它
答案 0 :(得分:0)
Hadoop 2.7.2
当我在Windows 7上构建并运行hadoop 2.7.2时遇到了同样的问题。要解决此问题,您需要执行以下操作:
1)在Build Machine上:将ZLIB_HOME设置为zlib头文件夹 zlib_unzip_folder \ zlib128-dll \ include 并构建分发。
2)在运行机器上,路径上提供了zlib1.dll zlib_unzip_folder \ zlib128-dll \ zlib1.dll 。
我使用了zlib 1.2.8,可在此处找到下载链接:http://zlib.net/zlib128-dll.zip
Hadoop 2.4.1
通过将本机lib设置为false并强制压缩映射输出,也可以在旧版本的HADOOP上重现此问题。有关详细信息,请参阅此处:https://issues.apache.org/jira/browse/HADOOP-11334