Have recreated this from https://github.com/apache/zeppelin/pull/1322 ### What is this PR for? While running a Notebook using shell, spark, python uses same user as which zeppelin server is running. Which means these interprets have same permission on file system as zeppelin server. IMO users should be able to impersonate themselves as a complete security system. ### What type of PR is it? [Improvement] ### Todos - [x] - Update doc - [x] - FIX NPEs - [x] - FIX CI ### What is the Jira issue? - [ZEPPELIN-1320](https://issues.apache.org/jira/browse/ZEPPELIN-1320) ### How should this be tested? - Enable shiro auth in shiro.ini - Add ssh key for the same user you want to try and impersonate (say user1). ``` adduser user1 ssh-keygen ssh user1localhost mkdir -p .ssh cat ~/.ssh/id_rsa.pub | ssh user1localhost 'cat >> .ssh/authorized_keys' ``` - Start zeppelin server, try and run following in paragraph in a notebook - Go to interpreter setting page, and enable "User Impersonate" in any of the interpreter (in my example its shell interpreter) ``` %sh whoami ``` Check that it should run as new user, i.e. "user1" ### Screenshots (if appropriate)  ### Questions: - Does the licenses files need update? no - Is there breaking changes for older versions? no - Does this needs documentation? yes Author: Prabhjyot Singh <prabhjyotsingh@gmail.org> Closes #1554 from prabhjyotsingh/ZEPPELIN-1320-2 and squashes the following commits:dc69c9d[Prabhjyot Singh] @Leemoonsoo review comment: making ZEPPELIN_SSH_COMMAND configurable1b26cc0[Prabhjyot Singh] add doc5a76839[Prabhjyot Singh] show User Impersonate only when interpreter setting is "per user" and "isolated"02c3084[Prabhjyot Singh] Merge remote-tracking branch 'origin/master' into ZEPPELIN-1320-203b2f20[Prabhjyot Singh] use user instead of ""0ff80ec[Prabhjyot Singh] Merge remote-tracking branch 'origin/master' into ZEPPELIN-1320-2dd0731d[Prabhjyot Singh] fix missing test casesaff1bf0[Prabhjyot Singh] user should have option to run these interpreters as different user.
9.5 KiB
| layout | title | description | group |
|---|---|---|---|
| page |
{% include JB/setup %}
Multi-purpose Notebook
The Notebook is the place for all your needs
- Data Ingestion
- Data Discovery
- Data Analytics
- Data Visualization & Collaboration
## Multiple Language Backend [Apache Zeppelin interpreter](./manual/interpreters.html) concept allows any language/data-processing-backend to be plugged into Zeppelin. Currently Apache Zeppelin supports many interpreters such as Apache Spark, Python, JDBC, Markdown and Shell.
Adding new language-backend is really simple. Learn how to create your own interpreter.
Apache Spark integration
Especially, Apache Zeppelin provides built-in Apache Spark integration. You don't need to build a separate module, plugin or library for it.
Apache Zeppelin with Spark integration provides
- Automatic SparkContext and SQLContext injection
- Runtime jar dependency loading from local filesystem or maven repository. Learn more about dependency loader.
- Canceling job and displaying its progress
For the further information about Apache Spark in Apache Zeppelin, please see Spark interpreter for Apache Zeppelin.
## Data visualization
Some basic charts are already included in Apache Zeppelin. Visualizations are not limited to Spark SQL query, any output from any language backend can be recognized and visualized.
Pivot chart
Apache Zeppelin aggregates values and displays them in pivot chart with simple drag and drop. You can easily create chart with multiple aggregated values including sum, count, average, min, max.
Learn more about display systems in Apache Zeppelin.
## Dynamic forms
Apache Zeppelin can dynamically create some input forms in your notebook.
## Collaborate by sharing your Notebook & Paragraph Your notebook URL can be shared among collaborators. Then Apache Zeppelin will broadcast any changes in realtime, just like the collaboration in Google docs.
Apache Zeppelin provides an URL to display the result only, that page does not include any menus and buttons inside of notebooks. You can easily embed it as an iframe inside of your website in this way. If you want to learn more about this feature, please visit this page.
## 100% Opensource
Apache Zeppelin is Apache2 Licensed software. Please check out the source repository and how to contribute. Apache Zeppelin has a very active development community. Join to our Mailing list and report issues on Jira Issue tracker.
What is the next ?
####Quick Start
- Getting Started
- Quick Start for basic instructions on installing Apache Zeppelin
- Configuration lists for Apache Zeppelin
- Explore Apache Zeppelin UI: basic components of Apache Zeppelin home
- Tutorial: a short walk-through tutorial that uses Apache Spark backend
- Basic Feature Guide
- Dynamic Form: a step by step guide for creating dynamic forms
- Publish your Paragraph results into your external website
- Customize Zeppelin Homepage with one of your notebooks
- More
- Upgrade Apache Zeppelin Version: a manual procedure of upgrading Apache Zeppelin version
- Build: Build from source
####Interpreter
- Interpreters in Apache Zeppelin: what is interpreter group? how can you set interpreters in Apache Zeppelin?
- Usage
- Interpreter Installation: Install not only community managed interpreters but also 3rd party interpreters
- Interpreter Dependency Management when you include external libraries to interpreter
- Interpreter User Impersonation when you want to run interpreter as end user
- Available Interpreters: currently, about 20 interpreters are available in Apache Zeppelin.
####Display System
- Basic Display System: Text, HTML, Table is available
- Angular API: a description about avilable backend and frontend AngularJS API with examples
####More
- Notebook Storage: a guide about saving notebooks to external storage
- REST API: available REST API list in Apache Zeppelin
- Security: available security support in Apache Zeppelin
- Advanced
- Contribute