cdh3u0的jetty导致Error Reading IndexFile

本文详细探讨了在使用Hadoop进行大规模数据处理时遇到的MapOutput丢失导致的性能瓶颈问题,提供了从升级版本到替换Jetty相关组件的多种解决方案,旨在优化MapReduce作业的执行效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

在36个机器上面跑一个大作业,8千多个map,2w多个reduce,跑reduce的时候经常会出现如下问题:

 

Map output lost, rescheduling: getMapOutput(attempt_201204130934_0012_m_000022_0,5416) failed :
java.io.IOException: Error Reading IndexFile
   at org.apache.hadoop.mapred.IndexCache.readIndexFileToCache(IndexCache.java:113)
   at org.apache.hadoop.mapred.IndexCache.getIndexInformation(IndexCache.java:66)
   at org.apache.hadoop.mapred.TaskTracker$MapOutputServlet.doGet(TaskTracker.java:3651)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
   at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
   at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1221)
   at org.apache.hadoop.http.HttpServer$QuotingInputFilter.doFilter(HttpServer.java:824)
   at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
   at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:399)
   at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
   at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
   at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
   at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450)
   at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
   at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
   at org.mortbay.jetty.Server.handle(Server.java:326)
   at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
   at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:928)
   at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)
   at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
   at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
   at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)
   at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
Caused by: java.io.EOFException
   at java.io.DataInputStream.readFully(DataInputStream.java:180)
   at java.io.DataInputStream.readLong(DataInputStream.java:399)
   at org.apache.hadoop.mapred.SpillRecord.<init>(SpillRecord.java:75)
   at org.apache.hadoop.mapred.SpillRecord.<init>(SpillRecord.java:55)
   at org.apache.hadoop.mapred.IndexCache.readIndexFileToCache(IndexCache.java:109)
   ... 23 more
 
reduce读取不到map的输出结果,然后map重新跑,reduce重新读取数据,整个job运行时间就变长了。。
在官方issue MAPREDUCE-2389 Spurious EOFExceptions reading SpillRecord index files中有介绍。

解决方案:
(1)升级到成3u3(没有测试,但是应该能解决)
(2)把3u0的lib目录下面jetty相关包替换成3u3使用的就行(经过测试没有问题)
jetty-6.1.26.cloudera.1.jar 、jetty-servlet-tester-6.1.26.cloudera.1.jar 、jetty-util-6.1.26.cloudera.1.jar
(3)官方issue中有提到换成jetty-6.1.14(没有测试)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值