hadoop-pig-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dmitriy V. Ryaboy (JIRA)" <j...@apache.org>
Subject [jira] Commented: (PIG-1516) finalize in bag implementations causes pig to run out of memory in reduce
Date Mon, 26 Jul 2010 17:18:16 GMT

    [ https://issues.apache.org/jira/browse/PIG-1516?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12892375#action_12892375
] 

Dmitriy V. Ryaboy commented on PIG-1516:
----------------------------------------

Another workaround for the meantime:

One can introduce a SmallBagFactory that inherits from BagFactory and produces SmallBags which
implement DataBag() without a finalize, and does not implement the file spilling behavior.
 SmallBagFactory would return SmallBags when bagFactory.newDefaultBag() is called. Then, provide
the system properties pig.data.bag.factory.name and pig.data.bag.factory.jar in pig.properties
to point to the new classes. 

Naturally, one has to be certain that databags won't need to spill to disk when doing this...


Ankur -- so what are you suggesting as a fix that avoids finalize? 

> finalize in bag implementations causes pig to run out of memory in reduce 
> --------------------------------------------------------------------------
>
>                 Key: PIG-1516
>                 URL: https://issues.apache.org/jira/browse/PIG-1516
>             Project: Pig
>          Issue Type: Bug
>    Affects Versions: 0.7.0
>            Reporter: Thejas M Nair
>            Assignee: Thejas M Nair
>             Fix For: 0.8.0
>
>
> *Problem:*
> pig bag implementations that are subclasses of DefaultAbstractBag, have finalize methods
implemented. As a result, the garbage collector moves them to a finalization queue, and the
memory used is freed only after the finalization happens on it.
> If the bags are not finalized fast enough, a lot of memory is consumed by the finalization
queue, and pig runs out of memory. This can happen if large number of small bags are being
created.
> *Solution:*
> The finalize function exists for the purpose of deleting the spill files that are created
when the bag is too large. But if the bags are small enough, no spill files are created, and
there is no use of the finalize function.
>  A new class that holds a list of files will be introduced (FileList). This class will
have a finalize method that deletes the files. The bags will no longer have finalize methods,
and the bags will use FileList instead of ArrayList<File>.
> *Possible workaround for earlier releases:*
> Since the fix is going into 0.8, here is a workaround -
> Disabling the combiner will reduce the number of bags getting created, as there will
not be the stage of combining intermediate merge results. But I would recommend disabling
it only if you have this problem as it is likely to slow down the query .
> To disable combiner, set the property: -Dpig.exec.nocombiner=true

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message