zeppelin
zeppelin copied to clipboard
[DRAFT] [ZEPPELIN-5722] Improve PluginManager
What is this PR for?
This pull request extends the existing PluginManager. The Java Plugin Framework PF4J is used for this purpose. My goal of this change is a better separation of Java libraries to avoid overlapping dependencies. The following change after this PullRequest makes sense to me:
- Definition of plugin configurations in the plugin itself and not in the big ZeppelinConfiguration class
- Further outsourcing of components from the zengine, e.g. hadoop, lucene, cron
What type of PR is it?
- Improvement
Todos
- [x] - Documentation
- [x] - License file
What is the Jira issue?
- https://issues.apache.org/jira/browse/ZEPPELIN-5722
How should this be tested?
- via CI and manual
Screenshots (if appropriate)
Questions:
- Does the licenses files need update? Yes
- Is there breaking changes for older versions? Yes
- Does this needs documentation? Yes
I like this kind of improvement :-) BTW, did you have any experience with PF4J before? I heard it for the first time so I just wonder if you are already familiar with it or not.
BTW, did you have any experience with PF4J before? I heard it for the first time so I just wonder if you are already familiar with it or not.
Not at all, I came across the project with with a quick Google query "Java Plugin Framework". The project is under the Apache 2 license and it seems to be actively maintained. There is also good documentation, so the integration into Zeppelin was quite easy.
Thank you for the reply. I feel like it's fairly enough.
@zjffdu For a first feedback I would be very grateful.
@jongyoul I've been thinking about this approach for a while, and I think I wanted to use the pf4j library to compensate for the lack of hk2 in zeppelin-zengine. What do you think about including hk2 on in the zeppelin-zengine module?
What do you think about including hk2 on in the zeppelin-zengine module?
I, totally, agree with you. It would be better to adopt it but to do it, we might need effort to do it. Do you have any idea to do it? Otherwise, we could add some code to ZeppelinServer to enable them.