spark-instrumented-optimizer/docs
Michael Gummelt a18d637112 [SPARK-20434][YARN][CORE] Move Hadoop delegation token code from yarn to core
## What changes were proposed in this pull request?

Move Hadoop delegation token code from `spark-yarn` to `spark-core`, so that other schedulers (such as Mesos), may use it.  In order to avoid exposing Hadoop interfaces in spark-core, the new Hadoop delegation token classes are kept private.  In order to provider backward compatiblity, and to allow YARN users to continue to load their own delegation token providers via Java service loading, the old YARN interfaces, as well as the client code that uses them, have been retained.

Summary:
- Move registered `yarn.security.ServiceCredentialProvider` classes from `spark-yarn` to `spark-core`.  Moved them into a new, private hierarchy under `HadoopDelegationTokenProvider`.  Client code in `HadoopDelegationTokenManager` now loads credentials from a whitelist of three providers (`HadoopFSDelegationTokenProvider`, `HiveDelegationTokenProvider`, `HBaseDelegationTokenProvider`), instead of service loading, which means that users are not able to implement their own delegation token providers, as they are in the `spark-yarn` module.

- The `yarn.security.ServiceCredentialProvider` interface has been kept for backwards compatibility, and to continue to allow YARN users to implement their own delegation token provider implementations.  Client code in YARN now fetches tokens via the new `YARNHadoopDelegationTokenManager` class, which fetches tokens from the core providers through `HadoopDelegationTokenManager`, as well as service loads them from `yarn.security.ServiceCredentialProvider`.

Old Hierarchy:

```
yarn.security.ServiceCredentialProvider (service loaded)
  HadoopFSCredentialProvider
  HiveCredentialProvider
  HBaseCredentialProvider
yarn.security.ConfigurableCredentialManager
```

New Hierarchy:

```
HadoopDelegationTokenManager
HadoopDelegationTokenProvider (not service loaded)
  HadoopFSDelegationTokenProvider
  HiveDelegationTokenProvider
  HBaseDelegationTokenProvider

yarn.security.ServiceCredentialProvider (service loaded)
yarn.security.YARNHadoopDelegationTokenManager
```
## How was this patch tested?

unit tests

Author: Michael Gummelt <mgummelt@mesosphere.io>
Author: Dr. Stefan Schimanski <sttts@mesosphere.io>

Closes #17723 from mgummelt/SPARK-20434-refactor-kerberos.
2017-06-15 11:46:00 -07:00
..
_data [SPARK-20505][ML] Add docs and examples for ml.stat.Correlation and ml.stat.ChiSquareTest. 2017-05-18 11:54:09 +08: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-18923][DOC][BUILD] Support skipping R/Python API docs 2016-12-21 08:59:38 +00:00
css [SPARK-12324][MLLIB][DOC] Fixes the sidebar in the ML documentation 2015-12-16 10:12:33 -08:00
img [SPARK-19074][SS][DOCS] Updated Structured Streaming Programming Guide for update mode and source/sink options 2017-01-06 11:29:01 -08:00
js [SPARK-19402][DOCS] Support LaTex inline formula correctly and fix warnings in Scala/Java APIs generation 2017-02-01 13:26:16 +00:00
_config.yml [SPARK-20759] SCALA_VERSION in _config.yml should be consistent with pom.xml 2017-05-19 15:26:39 +01:00
api.md [SPARK-8639] [DOCS] Fixed Minor Typos in Documentation 2015-06-27 08:47:00 +03:00
building-spark.md [SPARK-20455][DOCS] Fix Broken Docker IT Docs 2017-04-25 09:13:50 +01:00
cloud-integration.md [SPARK-7481][BUILD] Add spark-hadoop-cloud module to pull in object store access. 2017-05-07 10:15:31 +01:00
cluster-overview.md [SPARK-18278][SCHEDULER] Documentation to point to Kubernetes cluster scheduler 2017-04-04 10:46:44 -07:00
configuration.md [SPARK-20981][SPARKSUBMIT] Add new configuration spark.jars.repositories as equivalence of --repositories 2017-06-05 11:06:50 -07: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-5484][GRAPHX] Periodically do checkpoint in Pregel 2017-04-25 11:20:32 -07: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 [SPARK-19660][CORE][SQL] Replace the configuration property names that are deprecated in the version of Hadoop 2.6 2017-02-28 10:13:42 +00:00
index.md [MINOR][DOC] Update deprecation notes on Python/Hadoop/Scala. 2017-06-07 08:50:36 +01: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-18705][ML][DOC] Update user guide to reflect one pass solver for L1 and elastic-net 2016-12-07 19:41:32 -08: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-20849][DOC][SPARKR] Document R DecisionTree 2017-05-25 23:00:50 -07:00
ml-clustering.md [SPARK-19386][SPARKR][DOC] Bisecting k-means in SparkR documentation 2017-02-03 12:19:47 -08:00
ml-collaborative-filtering.md [SPARK-19345][ML][DOC] Add doc for "coldStartStrategy" usage in ALS 2017-03-02 15:51:16 +02: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-19969][ML] Imputer doc and example 2017-04-03 11:42:33 +02:00
ml-frequent-pattern-mining.md [SPARK-19791][ML] Add doc and example for fpgrowth 2017-04-29 10:51:45 -07:00
ml-guide.md [SPARK-20506][DOCS] Add HTML links to highlight list in MLlib guide for 2.2 2017-05-22 12:29:29 +02: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-20506][DOCS] 2.2 migration guide 2017-05-19 20:51:56 +02:00
ml-pipeline.md [SPARK-19797][DOC] ML pipeline document correction 2017-03-03 11:55:57 +01:00
ml-statistics.md [SPARK-20505][ML] Add docs and examples for ml.stat.Correlation and ml.stat.ChiSquareTest. 2017-05-18 11:54:09 +08: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-19410][DOC] Fix brokens links in ml-pipeline and ml-tuning 2017-02-01 13:27:20 +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-20011][ML][DOCS] Clarify documentation for ALS 'rank' parameter 2017-03-21 13:23:59 +00: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-6227][MLLIB][PYSPARK] Implement PySpark wrappers for SVD and PCA (v2) 2017-05-03 10:58:05 +02: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-17645][MLLIB][ML][FOLLOW-UP] document minor change 2017-01-10 13:09:58 +00:00
mllib-frequent-pattern-mining.md [SPARK-19791][ML] Add doc and example for fpgrowth 2017-04-29 10:51:45 -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-19550][BUILD][CORE][WIP] Remove Java 7 support 2017-02-16 12:32:45 +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-19550][BUILD][CORE][WIP] Remove Java 7 support 2017-02-16 12:32:45 +00:00
monitoring.md Small rewording about history server use case 2017-04-21 08:52:18 +01: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-19516][DOC] update public doc to use SparkSession instead of SparkContext 2017-03-07 11:32:36 -08:00
rdd-programming-guide.md [SPARK-20769][DOC] Incorrect documentation for using Jupyter notebook 2017-05-17 10:06:01 +01:00
README.md [SPARK-18923][DOC][BUILD] Support skipping R/Python API docs 2016-12-21 08:59:38 +00:00
running-on-mesos.md [SPARK-21000][MESOS] Add Mesos labels support to the Spark Dispatcher 2017-06-11 09:49:39 +01:00
running-on-yarn.md [SPARK-20434][YARN][CORE] Move Hadoop delegation token code from yarn to core 2017-06-15 11:46:00 -07:00
scala-programming-guide.md [SPARK-1566] consolidate programming guide, and general doc updates 2014-05-30 00:34:33 -07:00
security.md [MINOR][DOC] Fix doc for web UI https configuration 2017-03-03 14:23:31 -08:00
spark-standalone.md [SPARK-20796] the location of start-master.sh in spark-standalone.md is wrong 2017-05-18 17:44:40 +01:00
sparkr.md [SPARK-20849][DOC][SPARKR] Document R DecisionTree 2017-05-25 23:00:50 -07:00
sql-programming-guide.md [SPARK-20980][DOCS] update doc to reflect multiLine change 2017-06-14 23:08:05 -07:00
storage-openstack-swift.md [SPARK-7481][BUILD] Add spark-hadoop-cloud module to pull in object store access. 2017-05-07 10:15:31 +01:00
streaming-custom-receivers.md [SPARK-19550][BUILD][CORE][WIP] Remove Java 7 support 2017-02-16 12:32:45 +00: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-19550][BUILD][CORE][WIP] Remove Java 7 support 2017-02-16 12:32:45 +00:00
streaming-kafka-0-10-integration.md [SPARK-19185][DSTREAM] Make Kafka consumer cache configurable 2017-06-08 09:55:43 -07: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 [DSTREAM][DOC] Add documentation for kinesis retry configurations 2017-05-18 11:24:33 -07:00
streaming-programming-guide.md [SPARK-19550][BUILD][CORE][WIP] Remove Java 7 support 2017-02-16 12:32:45 +00:00
structured-streaming-kafka-integration.md [SPARK-19906][SS][DOCS] Documentation describing how to write queries to Kafka 2017-03-20 17:18:59 -07:00
structured-streaming-programming-guide.md [DOCS] Fix error: ambiguous reference to overloaded definition 2017-06-12 10:59:33 +01:00
submitting-applications.md Document Master URL format in high availability set up 2017-04-11 10:34:39 +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. In addition, SKIP_SCALADOC=1, SKIP_PYTHONDOC=1, and SKIP_RDOC=1 can be used to skip a single step of the corresponding language.