我已经设置了一个新的集群(在windows上使用hdp),我遇到了一个以前从未遇到过的新问题。
当我从hadoop示例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
现在,当我转到应用程序主跟踪器并深入查看日志时,我发现reducer需要一个gzip文件,但Map器输出没有
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 phase log时,我看到了这个
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加载中的错误,所以我运行了job overriding options以在不压缩的情况下运行,它确实可以工作。
我已经从zlib站点下载了zlib.dll,并将其放在hadoop/bin、c:\system32和c:\systemwow64文件夹中,然后重新启动了集群服务,但仍然有相同的错误。不知道为什么。如果有任何想法可以进一步调试并解决这个问题,我将不胜感激
1条答案
按热度按时间n3schb8v1#
hadoop 2.7.2版
我在Windows7上构建并运行Hadoop2.7.2时遇到了同样的问题。要解决此问题,您需要执行以下操作:
1) 在生成计算机上:将zlib\u home设置为zlib headers文件夹zlib\u unzip\u文件夹\zlib128 dll\include并生成发行版。
2) 在运行计算机上,使zlib1.dll zlib\u unzip\u folder\zlib128 dll\zlib1.dll在路径上可用。
我使用了zlib 1.2.8,下载链接可以在这里找到:http://zlib.net/zlib128-dll.zip
hadoop 2.4.1版
通过将本机lib设置为false并强制压缩map输出,这个问题也可以在旧版本的hadoop上重现。有关更多详细信息,请参见:https://issues.apache.org/jira/browse/hadoop-11334