Description
Problem
Currently we create separate HadoopClassLoader for each and every MR task. It has serious performance implications:
1) Every task have to reload classes form disk;
2) Every task starts from "cold" state with not-compiled classes;
3) Very high permgen/metaspace and code cache regions usage.
We can observe, that every task classloader works with the same JARs. It means that the only case when we really need to isolate tasks through classloaders is when they depend on some static data, which should not be shared.
Proposal
- Share HadoopClassLoader between tasks by default;
- Allow to optionally disable this opto.
Attachments
Issue Links
- links to