Подтвердить что ты не робот

Утечка Mapreduce Map потеряна

Я запускаю большую (более 100 узлов) серию заданий mapreduce на Amazon Elastic MapReduce.

В фазе уменьшения уже завершенные задачи карты продолжают терпеть неудачу с

Map output lost, rescheduling: getMapOutput(attempt_201204182047_0053_m_001053_0,299) 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:3810)
    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:835)
    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:74)
    at org.apache.hadoop.mapred.SpillRecord.<init>(SpillRecord.java:54)
    at org.apache.hadoop.mapred.IndexCache.readIndexFileToCache(IndexCache.java:109)
    ... 23 more

Доля картографов, для которых это происходит, достаточно мала, чтобы я не возражал, кроме того, что когда это происходит, редукторы останавливаются и ждут повторения одной задачи карты, поэтому вся работа сохраняет паузу в течение 1-5 минут каждый раз.

Я думаю, что это связано с этой ошибкой → https://issues.apache.org/jira/browse/MAPREDUCE-2980 Кто-нибудь знает, как запустить работу EMR без этого?

EDIT: Вот еще какая-то информация, если это поможет. Формат ввода SequenceFileInputFormat. Формат вывода - слегка измененная версия SequenceFileOutputFormat. Пара ключей-значений определяется пользователем (значение велико и реализует Configurable). Там нет Combiner, просто Mapper и Reducer. Я использую сжатие блока для ввода и вывода (а также запись сжатия происходит для промежуточных kv-пар. Это значение по умолчанию для EMR). Кодек по умолчанию является SnappyCodec, я считаю. Наконец, это фактически серия заданий, которые запускаются последовательно, причем каждый из них использует вывод предыдущего задания в качестве входа в следующий. Первые рабочие места небольшие и работают нормально. Это только тогда, когда рабочие места начинают расти действительно большими, что это происходит.

4b9b3361