spark-instrumented-optimizer/docs
Yinan Li 3f4060c340 [SPARK-22646][K8S] Spark on Kubernetes - basic submission client
This PR contains implementation of the basic submission client for the cluster mode of Spark on Kubernetes. It's step 2 from the step-wise plan documented [here](https://github.com/apache-spark-on-k8s/spark/issues/441#issuecomment-330802935).
This addition is covered by the [SPIP](http://apache-spark-developers-list.1001551.n3.nabble.com/SPIP-Spark-on-Kubernetes-td22147.html) vote which passed on Aug 31.

This PR and #19468 together form a MVP of Spark on Kubernetes that allows users to run Spark applications that use resources locally within the driver and executor containers on Kubernetes 1.6 and up. Some changes on pom and build/test setup are copied over from #19468 to make this PR self contained and testable.

The submission client is mainly responsible for creating the Kubernetes pod that runs the Spark driver. It follows a step-based approach to construct the driver pod, as the code under the `submit.steps` package shows. The steps are orchestrated by `DriverConfigurationStepsOrchestrator`. `Client` creates the driver pod and waits for the application to complete if it's configured to do so, which is the case by default.

This PR also contains Dockerfiles of the driver and executor images. They are included because some of the environment variables set in the code would not make sense without referring to the Dockerfiles.

* The patch contains unit tests which are passing.
* Manual testing: ./build/mvn -Pkubernetes clean package succeeded.
* It is a subset of the entire changelist hosted at http://github.com/apache-spark-on-k8s/spark which is in active use in several organizations.
* There is integration testing enabled in the fork currently hosted by PepperData which is being moved over to RiseLAB CI.
* Detailed documentation on trying out the patch in its entirety is in: https://apache-spark-on-k8s.github.io/userdocs/running-on-kubernetes.html

cc rxin felixcheung mateiz (shepherd)
k8s-big-data SIG members & contributors: mccheah foxish ash211 ssuchter varunkatta kimoonkim erikerlandson tnachen ifilonenko liyinan926

Author: Yinan Li <liyinan926@gmail.com>

Closes #19717 from liyinan926/spark-kubernetes-4.
2017-12-11 15:15:05 -08: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-21485][SQL][DOCS] Spark SQL documentation generation for built-in functions 2017-07-26 09:38:51 -07:00
_plugins [MINOR][DOCS] Minor doc fixes related with doc build and uses script dir in SQL doc gen script 2017-08-26 13:56:24 +09:00
css [MINOR][DOC] The left navigation bar should be fixed with respect to scrolling. 2017-11-21 07:25:56 -06: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-21485][SQL][DOCS] Spark SQL documentation generation for built-in functions 2017-07-26 09:38:51 -07:00
building-spark.md [SPARK-22142][BUILD][STREAMING] Move Flume support behind a profile, take 2 2017-10-06 15:08:28 +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-20992][SCHEDULER] Add links in documentation to Nomad integration. 2017-10-17 09:36:09 +02:00
configuration.md [SPARK-22646][K8S] Spark on Kubernetes - basic submission client 2017-12-11 15:15:05 -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
graphx-programming-guide.md [SPARK-21267][DOCS][MINOR] Follow up to avoid referencing programming-guide redirector 2017-07-15 09:21:29 +01: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 [SPARK-21485][SQL][DOCS] Spark SQL documentation generation for built-in functions 2017-07-26 09:38:51 -07:00
job-scheduling.md [SPARK-19662][SCHEDULER][TEST] Add Fair Scheduler Unit Test coverage for different build cases 2017-08-28 14:54:00 -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 Added more information to Imputer 2017-10-30 07:24:55 +00: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-21027][ML][PYTHON] Added tunable parallelism to one vs. rest in both Scala mllib and Pyspark 2017-09-12 10:02:27 -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-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-21911][ML][FOLLOW-UP] Fix doc for parallel ML Tuning in PySpark 2017-11-13 17:00:51 -08: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-22399][ML] update the location of reference paper 2017-10-31 08:20:23 +00:00
mllib-collaborative-filtering.md [SPARK-21615][ML][MLLIB][DOCS] Fix broken redirect in collaborative filtering docs to databricks training repo 2017-08-03 09:58:43 +01: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-21976][DOC] Fix wrong documentation for Mean Absolute Error. 2017-09-12 10:33:35 +01: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-21267][DOCS][MINOR] Follow up to avoid referencing programming-guide redirector 2017-07-15 09:21:29 +01: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 [DOC] update the API doc and modify the stage API description 2017-11-09 11:46:01 +01:00
programming-guide.md [SPARK-21267][SS][DOCS] Update Structured Streaming Documentation 2017-07-06 17:28:20 -07:00
quick-start.md [SPARK-22107] Change as to alias in python quickstart 2017-09-25 09:16:27 +09:00
rdd-programming-guide.md [DOCS] Fix unreachable links in the document 2017-09-12 15:07:04 +01:00
README.md [MINOR][DOCS] Minor doc fixes related with doc build and uses script dir in SQL doc gen script 2017-08-26 13:56:24 +09:00
running-on-mesos.md [SPARK-19606][MESOS] Support constraints in spark-dispatcher 2017-11-12 11:21:23 -08:00
running-on-yarn.md [SPARK-22646][K8S] Spark on Kubernetes - basic submission client 2017-12-11 15:15:05 -08:00
security.md [SPARK-22188][CORE] Adding security headers for preventing XSS, MitM and MIME sniffing 2017-10-19 08:33:14 +01:00
spark-standalone.md [SPARK-21506][DOC] The description of "spark.executor.cores" may be not correct 2017-10-10 20:44:33 +08:00
sparkr.md [SPARK-20849][DOC][SPARKR] Document R DecisionTree 2017-05-25 23:00:50 -07:00
sql-programming-guide.md [SPARK-22489][DOC][FOLLOWUP] Update broadcast behavior changes in migration section 2017-12-03 23:52:37 -08: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-21508][DOC] Fix example code provided in Spark Streaming Documentation 2017-07-29 13:26:10 +01:00
streaming-flume-integration.md [SPARK-22142][BUILD][STREAMING] Move Flume support behind a profile, take 2 2017-10-06 15:08:28 +01:00
streaming-kafka-0-8-integration.md [SPARK-21893][BUILD][STREAMING][WIP] Put Kafka 0.8 behind a profile 2017-09-13 10:10:40 +01: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-21893][BUILD][STREAMING][WIP] Put Kafka 0.8 behind a profile 2017-09-13 10:10:40 +01:00
streaming-kinesis-integration.md [SPARK-20855][Docs][DStream] Update the Spark kinesis docs to use the KinesisInputDStream builder instead of deprecated KinesisUtils 2017-07-25 08:27:03 +01:00
streaming-programming-guide.md [SPARK-20448][DOCS] Document how FileInputDStream works with object storage 2017-09-23 17:08:41 +01:00
structured-streaming-kafka-integration.md [MINOR][SS][DOCS] Minor doc change for kafka integration 2017-07-21 08:43:38 +01:00
structured-streaming-programming-guide.md [SPARK-21924][DOCS] Update structured streaming programming guide doc 2017-09-06 08:22:57 +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-21267][DOCS][MINOR] Follow up to avoid referencing programming-guide redirector 2017-07-15 09:21:29 +01: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, Java, Python, R and SQL.

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 mkdocs
$ 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 text files 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, Javadoc, Sphinx, roxygen2, MkDocs)

You can build just the Spark scaladoc and javadoc by running build/sbt unidoc from the SPARK_HOME directory.

Similarly, you can build just the PySpark docs by running make html from the SPARK_HOME/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_HOME/R/create-docs.sh, and the SQL docs can be built by running SPARK_HOME/sql/create-docs.sh after building Spark first.

When you run jekyll build in the docs directory, it will also copy over the scaladoc and javadoc 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 and javadoc using Unidoc. The jekyll plugin also generates the PySpark docs using Sphinx, SparkR docs using roxygen2 and SQL docs using MkDocs.

NOTE: To skip the step of building and copying over the Scala, Java, Python, R and SQL API docs, run SKIP_API=1 jekyll build. In addition, SKIP_SCALADOC=1, SKIP_PYTHONDOC=1, SKIP_RDOC=1 and SKIP_SQLDOC=1 can be used to skip a single step of the corresponding language. SKIP_SCALADOC indicates skipping both the Scala and Java docs.