GitHub user manishgupta88 opened a pull request:
https://github.com/apache/carbondata/pull/2267
[CARBONDATA-2433] [Lucene GC Issue] Executor OOM because of GC when
blocklet pruning is done using Lucene datamap
**Problem**
Executor OOM because of GC when blocklet pruning is done using Lucene
datamap
**Analysis**
While seraching using lucene it creates a PriorityQueue to hold the
documents. As size is not specified by default the PriorityQueue size is
equal to the number of lucene documents. As the docuemnts start getting
added to the heap the GC time increases and after some time task fails due
to excessive GC and executor OOM occurs.
Reference blog:
http://lucene.472066.n3.nabble.com/Optimization-of-memory-usage-in-PriorityQueue-td590355.html
**Fix**
Specify the limit for first search and after that use the searchAfter API
to search in incremental order with gieven PriorityQueue size.
- [ ] Any interfaces changed?
No
- [ ] Any backward compatibility impacted?
No
- [ ] Document update required?
No
- [ ] Testing done
Manually verified with 3.7 billion data. For a query, GC time came down to
5 sec from 40 min.
- [ ] For large changes, please consider breaking it into sub-tasks under
an umbrella JIRA.
NA
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/manishgupta88/carbondata lucene_gc_issue
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/carbondata/pull/2267.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 #2267
----
commit ecea6009c55326817826bc4de8b14fad52b6db35
Author: manishgupta88 <tomanishgupta18@...>
Date: 2018-05-03T15:10:41Z
Problem
Executor OOM because of GC when blocklet pruning is done using Lucene
datamap
Analysis
While seraching using lucene it creates a PriorityQueue to hold the
documents. As size is not specified by default the PriorityQueue size is
equal to the number of lucene documents. As the docuemnts start getting
added to the heap the GC time increases and after some time task fails due
to excessive GC and executor OOM occurs.
Reference blog:
http://lucene.472066.n3.nabble.com/Optimization-of-memory-usage-in-PriorityQueue-td590355.html
Fix
Specify the limit for first search and after that use the searchAfter API
to search in incremental order with gieven PriorityQueue size.
----
---