[ https://issues.apache.org/jira/browse/PIG-2812?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13412459#comment-13412459 ]
Haitao Yao commented on PIG-2812: --------------------------------- Oh God, this is really a big change. It relates the Iterator of the data bags. If we use 1 spill file, and every time we call the next(), we have to skip all the read bytes, and this will be a big performance penalty. I think we can consider change the iterator interface with a method free() added, so we can hold an InputStream and make sure the free method is called when the iterator finish its job. Without the free method , we can not assure that somebody call break in an iterator's loop. This will cause InputStream leak. > Spill InternalCachedBag into only 1 file > ---------------------------------------- > > Key: PIG-2812 > URL: https://issues.apache.org/jira/browse/PIG-2812 > Project: Pig > Issue Type: Bug > Components: data > Reporter: Haitao Yao > Fix For: 0.11 > > Attachments: aa.jpg > > > I encountered a reducer's OOM because of java.io.DeleteOnExitHook. And I > found out that the InternalCachedBag creates a seperate tmp file, and the tmp > files is deleted on exit. So the file delete hook caused the OOM. > Why not just hold the tmp file handle and spill only one tmp file? > Too many tmp files may block the tasktracker start process, if the tmp files > are not cleaned on time and the tasktracker restarts at this specific time. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira