GitHub user jeanlyn opened a pull request:

    https://github.com/apache/spark/pull/12028

    [SPARK-13845][CORE][Backport-1.6]Using onBlockUpdated to replace onTaskEnd 
avioding driver OOM

    ## What changes were proposed in this pull request?
    
    We have a streaming job using `FlumePollInputStream` always driver OOM 
after few days, here is some driver heap dump before OOM
    ```
     num     #instances         #bytes  class name
    ----------------------------------------------
       1:      13845916      553836640  org.apache.spark.storage.BlockStatus
       2:      14020324      336487776  org.apache.spark.storage.StreamBlockId
       3:      13883881      333213144  scala.collection.mutable.DefaultEntry
       4:          8907       89043952  [Lscala.collection.mutable.HashEntry;
       5:         62360       65107352  [B
       6:        163368       24453904  [Ljava.lang.Object;
       7:        293651       20342664  [C
    ...
    ```
    `BlockStatus` and `StreamBlockId` keep on growing, and the driver OOM in 
the end.
    After investigated, i found the `executorIdToStorageStatus` in 
`StorageStatusListener` seems never remove the blocks from `StorageStatus`. 
    In order to fix the issue, i try to use `onBlockUpdated` replace `onTaskEnd 
` , so we can update the block informations(add blocks, drop the block from 
memory to disk and delete the blocks) in time.
    
    
    ## How was this patch tested?
    
    Existing unit tests and manual tests
    
    


You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/jeanlyn/spark fixoom1.6

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/spark/pull/12028.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #12028
    
----
commit f37f3594b71df0083880aa5395a77808fd6c72b3
Author: jeanlyn <[email protected]>
Date:   2016-03-29T05:06:03Z

    Using onBlockUpdated to replace onTaskEnd avioding driver OOM

----


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to