spark-instrumented-optimizer/docs
Mark Grover 237c3b9642 [SPARK-18535][UI][YARN] Redact sensitive information from Spark logs and UI
## What changes were proposed in this pull request?

This patch adds a new property called `spark.secret.redactionPattern` that
allows users to specify a scala regex to decide which Spark configuration
properties and environment variables in driver and executor environments
contain sensitive information. When this regex matches the property or
environment variable name, its value is redacted from the environment UI and
various logs like YARN and event logs.

This change uses this property to redact information from event logs and YARN
logs. It also, updates the UI code to adhere to this property instead of
hardcoding the logic to decipher which properties are sensitive.

Here's an image of the UI post-redaction:
![image](https://cloud.githubusercontent.com/assets/1709451/20506215/4cc30654-b007-11e6-8aee-4cde253fba2f.png)

Here's the text in the YARN logs, post-redaction:
``HADOOP_CREDSTORE_PASSWORD -> *********(redacted)``

Here's the text in the event logs, post-redaction:
``...,"spark.executorEnv.HADOOP_CREDSTORE_PASSWORD":"*********(redacted)","spark.yarn.appMasterEnv.HADOOP_CREDSTORE_PASSWORD":"*********(redacted)",...``

## How was this patch tested?
1. Unit tests are added to ensure that redaction works.
2. A YARN job reading data off of S3 with confidential information
(hadoop credential provider password) being provided in the environment
variables of driver and executor. And, afterwards, logs were grepped to make
sure that no mention of secret password was present. It was also ensure that
the job was able to read the data off of S3 correctly, thereby ensuring that
the sensitive information was being trickled down to the right places to read
the data.
3. The event logs were checked to make sure no mention of secret password was
present.
4. UI environment tab was checked to make sure there was no secret information
being displayed.

Author: Mark Grover <mark@apache.org>

Closes #15971 from markgrover/master_redaction.
2016-11-28 08:59:47 -08:00
..
_data [SPARK-14817][ML][MLLIB][DOC] Made DataFrame-based API primary in MLlib guide 2016-07-15 13:38:23 -07:00
_includes [SPARK-14817][ML][MLLIB][DOC] Made DataFrame-based API primary in MLlib guide 2016-07-15 13:38:23 -07:00
_layouts [SPARK-18073][DOCS][WIP] Migrate wiki to spark.apache.org web site 2016-11-23 11:25:47 +00:00
_plugins [SPARK-16555] Work around Jekyll error-handling bug which led to silent failures 2016-07-14 15:55:36 -07:00
css [SPARK-12324][MLLIB][DOC] Fixes the sidebar in the ML documentation 2015-12-16 10:12:33 -08:00
img [MINOR][DOCS] Remove unused images; crush PNGs that could use it for good measure 2016-07-04 09:21:58 +01:00
js [SPARK-16822][DOC] Support latex in scaladoc. 2016-08-02 09:14:08 -07:00
_config.yml [SPARK-16637] Unified containerizer 2016-07-29 05:50:47 -07:00
api.md [SPARK-8639] [DOCS] Fixed Minor Typos in Documentation 2015-06-27 08:47:00 +03:00
building-spark.md [SPARK-18073][DOCS][WIP] Migrate wiki to spark.apache.org web site 2016-11-23 11:25:47 +00:00
cluster-overview.md [SPARK-7997][CORE] Remove Akka from Spark Core and Streaming 2016-01-22 21:20:04 -08:00
configuration.md [SPARK-18535][UI][YARN] Redact sensitive information from Spark logs and UI 2016-11-28 08:59:47 -08:00
contributing-to-spark.md [SPARK-18073][DOCS][WIP] Migrate wiki to spark.apache.org web site 2016-11-23 11:25:47 +00:00
ec2-scripts.md [SPARK-14742][DOCS] Redirect spark-ec2 doc to new location 2016-04-20 10:46:02 -07:00
graphx-programming-guide.md [SPARK-18480][DOCS] Fix wrong links for ML guide docs 2016-11-17 13:40:16 +00:00
hadoop-provided.md [SPARK-6511] [docs] Fix example command in hadoop-provided docs. 2015-06-11 15:29:03 -07:00
hardware-provisioning.md [MINOR] fix typo in documents 2016-06-07 13:29:27 +01:00
index.md [SPARK-18073][DOCS][WIP] Migrate wiki to spark.apache.org web site 2016-11-23 11:25:47 +00:00
java-programming-guide.md [SPARK-1566] consolidate programming guide, and general doc updates 2014-05-30 00:34:33 -07:00
job-scheduling.md [SPARK-16505][YARN] Optionally propagate error during shuffle service startup. 2016-07-14 09:42:32 -05:00
ml-advanced.md [SPARK-12370][DOCUMENTATION] Documentation should link to examples … 2016-08-13 11:25:03 +01:00
ml-ann.md [SPARK-14817][ML][MLLIB][DOC] Made DataFrame-based API primary in MLlib guide 2016-07-15 13:38:23 -07:00
ml-classification-regression.md [SPARK-18480][DOCS] Fix wrong links for ML guide docs 2016-11-17 13:40:16 +00:00
ml-clustering.md [MINOR][DOC] Unify example marks 2016-11-08 14:04:07 +00:00
ml-collaborative-filtering.md [MINOR][DOC] Unify example marks 2016-11-08 14:04:07 +00:00
ml-decision-tree.md [SPARK-14817][ML][MLLIB][DOC] Made DataFrame-based API primary in MLlib guide 2016-07-15 13:38:23 -07:00
ml-ensembles.md [SPARK-14817][ML][MLLIB][DOC] Made DataFrame-based API primary in MLlib guide 2016-07-15 13:38:23 -07:00
ml-features.md [SPARK-18480][DOCS] Fix wrong links for ML guide docs 2016-11-17 13:40:16 +00:00
ml-guide.md [SPARK-16761][DOC][ML] Fix doc link in docs/ml-guide.md 2016-07-29 06:01:23 -07:00
ml-linear-methods.md [SPARK-14817][ML][MLLIB][DOC] Made DataFrame-based API primary in MLlib guide 2016-07-15 13:38:23 -07:00
ml-migration-guides.md [SPARK-14817][ML][MLLIB][DOC] Made DataFrame-based API primary in MLlib guide 2016-07-15 13:38:23 -07:00
ml-pipeline.md [SPARK-18480][DOCS] Fix wrong links for ML guide docs 2016-11-17 13:40:16 +00:00
ml-survival-regression.md [SPARK-14817][ML][MLLIB][DOC] Made DataFrame-based API primary in MLlib guide 2016-07-15 13:38:23 -07:00
ml-tuning.md [SPARK-18446][ML][DOCS] Add links to API docs for ML algos 2016-11-16 10:53:23 +00:00
mllib-classification-regression.md [SPARK-14817][ML][MLLIB][DOC] Made DataFrame-based API primary in MLlib guide 2016-07-15 13:38:23 -07:00
mllib-clustering.md [SPARK-18427][DOC] Update docs of mllib.KMeans 2016-11-15 15:44:50 +01:00
mllib-collaborative-filtering.md [SPARK-14817][ML][MLLIB][DOC] Made DataFrame-based API primary in MLlib guide 2016-07-15 13:38:23 -07:00
mllib-data-types.md [MINOR][DOCS] Fix minor typos in python example code 2016-08-30 11:23:37 +01:00
mllib-decision-tree.md [SPARK-14817][ML][MLLIB][DOC] Made DataFrame-based API primary in MLlib guide 2016-07-15 13:38:23 -07:00
mllib-dimensionality-reduction.md [SPARK-14817][ML][MLLIB][DOC] Made DataFrame-based API primary in MLlib guide 2016-07-15 13:38:23 -07:00
mllib-ensembles.md [SPARK-14817][ML][MLLIB][DOC] Made DataFrame-based API primary in MLlib guide 2016-07-15 13:38:23 -07:00
mllib-evaluation-metrics.md [SPARK-14817][ML][MLLIB][DOC] Made DataFrame-based API primary in MLlib guide 2016-07-15 13:38:23 -07:00
mllib-feature-extraction.md [SPARK-18088][ML] Various ChiSqSelector cleanups 2016-11-01 17:00:00 -07:00
mllib-frequent-pattern-mining.md [SPARK-14817][ML][MLLIB][DOC] Made DataFrame-based API primary in MLlib guide 2016-07-15 13:38:23 -07:00
mllib-guide.md [SPARK-14817][ML][MLLIB][DOC] Made DataFrame-based API primary in MLlib guide 2016-07-15 13:38:23 -07:00
mllib-isotonic-regression.md [SPARK-18445][BUILD][DOCS] Fix the markdown for Note:/NOTE:/Note that/'''Note:''' across Scala/Java API documentation 2016-11-19 11:24:15 +00:00
mllib-linear-methods.md [SPARK-18480][DOCS] Fix wrong links for ML guide docs 2016-11-17 13:40:16 +00:00
mllib-migration-guides.md [SPARK-14817][ML][MLLIB][DOC] Made DataFrame-based API primary in MLlib guide 2016-07-15 13:38:23 -07:00
mllib-naive-bayes.md [SPARK-14817][ML][MLLIB][DOC] Made DataFrame-based API primary in MLlib guide 2016-07-15 13:38:23 -07:00
mllib-optimization.md [SPARK-14817][ML][MLLIB][DOC] Made DataFrame-based API primary in MLlib guide 2016-07-15 13:38:23 -07:00
mllib-pmml-model-export.md [SPARK-14817][ML][MLLIB][DOC] Made DataFrame-based API primary in MLlib guide 2016-07-15 13:38:23 -07:00
mllib-statistics.md [SPARK-14817][ML][MLLIB][DOC] Made DataFrame-based API primary in MLlib guide 2016-07-15 13:38:23 -07:00
monitoring.md [MINOR][DOC] Fix typos in the 'configuration', 'monitoring' and 'sql-programming-guide' documentation 2016-11-16 10:34:56 +00:00
programming-guide.md [SPARK-18432][DOC] Changed HDFS default block size from 64MB to 128MB 2016-11-14 21:07:59 +09:00
python-programming-guide.md [SPARK-1566] consolidate programming guide, and general doc updates 2014-05-30 00:34:33 -07:00
quick-start.md [SPARK-17707][WEBUI] Web UI prevents spark-submit application to be finished 2016-10-07 10:31:41 -07:00
README.md [SPARK-17736][DOCUMENTATION][SPARKR] Update R README for rmarkdown,… 2016-10-03 10:46:38 +01:00
running-on-mesos.md [SPARK-18232][MESOS] Support CNI 2016-11-14 23:46:54 -08:00
running-on-yarn.md [YARN][DOC] Remove non-Yarn specific configurations from running-on-yarn.md 2016-11-17 11:13:22 +00:00
scala-programming-guide.md [SPARK-1566] consolidate programming guide, and general doc updates 2014-05-30 00:34:33 -07:00
security.md Update docs to include SASL support for RPC 2016-08-08 16:07:51 -07:00
spark-standalone.md [SPARK-17711] Compress rolled executor log 2016-10-18 13:23:31 -07:00
sparkr.md [SPARK-18073][DOCS][WIP] Migrate wiki to spark.apache.org web site 2016-11-23 11:25:47 +00:00
sql-programming-guide.md [WIP][SQL][DOC] Fix incorrect code tag 2016-11-26 15:41:37 +00:00
storage-openstack-swift.md [SPARK-938][doc] Add OpenStack Swift support 2014-09-07 20:56:04 -07:00
streaming-custom-receivers.md [SPARK-12370][DOCUMENTATION] Documentation should link to examples … 2016-08-13 11:25:03 +01:00
streaming-flume-integration.md [SPARK-17985][CORE] Bump commons-lang3 version to 3.5. 2016-10-19 10:06:43 +01:00
streaming-kafka-0-8-integration.md [SPARK-17331][CORE][MLLIB] Avoid allocating 0-length arrays 2016-09-01 12:13:07 -07:00
streaming-kafka-0-10-integration.md [SPARK-18198][DOC][STREAMING] Highlight code snippets 2016-11-02 09:10:34 +00:00
streaming-kafka-integration.md [SPARK-16312][STREAMING][KAFKA][DOC] Doc for Kafka 0.10 integration 2016-08-05 10:13:32 +01:00
streaming-kinesis-integration.md [MINOR][DOCS] Fix th doc. of spark-streaming with kinesis 2016-09-29 08:26:03 -04:00
streaming-programming-guide.md [SPARK-18073][DOCS][WIP] Migrate wiki to spark.apache.org web site 2016-11-23 11:25:47 +00:00
structured-streaming-kafka-integration.md [DOC][MINOR] Kafka doc: breakup into lines 2016-11-16 09:51:59 +00:00
structured-streaming-programming-guide.md [SPARK-18461][DOCS][STRUCTUREDSTREAMING] Added more information about monitoring streaming queries 2016-11-16 11:03:10 -08:00
submitting-applications.md [SPARK-17898][DOCS] repositories needs username and password 2016-10-22 09:39:07 +01:00
tuning.md [SPARK-18432][DOC] Changed HDFS default block size from 64MB to 128MB 2016-11-14 21:07:59 +09:00

Welcome to the Spark documentation!

This readme will walk you through navigating and building the Spark documentation, which is included here with the Spark source code. You can also find documentation specific to release versions of Spark at http://spark.apache.org/documentation.html.

Read on to learn more about viewing documentation in plain text (i.e., markdown) or building the documentation yourself. Why build it yourself? So that you have the docs that corresponds to whichever version of Spark you currently have checked out of revision control.

Prerequisites

The Spark documentation build uses a number of tools to build HTML docs and API docs in Scala, Python and R.

You need to have Ruby and Python installed. Also install the following libraries:

    $ sudo gem install jekyll jekyll-redirect-from pygments.rb
    $ sudo pip install Pygments
    # Following is needed only for generating API docs
    $ sudo pip install sphinx pypandoc
    $ sudo Rscript -e 'install.packages(c("knitr", "devtools", "roxygen2", "testthat", "rmarkdown"), repos="http://cran.stat.ucla.edu/")'

(Note: If you are on a system with both Ruby 1.9 and Ruby 2.0 you may need to replace gem with gem2.0)

Generating the Documentation HTML

We include the Spark documentation as part of the source (as opposed to using a hosted wiki, such as the github wiki, as the definitive documentation) to enable the documentation to evolve along with the source code and be captured by revision control (currently git). This way the code automatically includes the version of the documentation that is relevant regardless of which version or release you have checked out or downloaded.

In this directory you will find textfiles formatted using Markdown, with an ".md" suffix. You can read those text files directly if you want. Start with index.md.

Execute jekyll build from the docs/ directory to compile the site. Compiling the site with Jekyll will create a directory called _site containing index.html as well as the rest of the compiled files.

$ cd docs
$ jekyll build

You can modify the default Jekyll build as follows:

    # Skip generating API docs (which takes a while)
    $ SKIP_API=1 jekyll build
    
    # Serve content locally on port 4000
    $ jekyll serve --watch
    
    # Build the site with extra features used on the live page
    $ PRODUCTION=1 jekyll build

API Docs (Scaladoc, Sphinx, roxygen2)

You can build just the Spark scaladoc by running build/sbt unidoc from the SPARK_PROJECT_ROOT directory.

Similarly, you can build just the PySpark docs by running make html from the SPARK_PROJECT_ROOT/python/docs directory. Documentation is only generated for classes that are listed as public in __init__.py. The SparkR docs can be built by running SPARK_PROJECT_ROOT/R/create-docs.sh.

When you run jekyll in the docs directory, it will also copy over the scaladoc for the various Spark subprojects into the docs directory (and then also into the _site directory). We use a jekyll plugin to run build/sbt unidoc before building the site so if you haven't run it (recently) it may take some time as it generates all of the scaladoc. The jekyll plugin also generates the PySpark docs using Sphinx.

NOTE: To skip the step of building and copying over the Scala, Python, R API docs, run SKIP_API=1 jekyll.