Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] Describe Spark submit in relation with client-mode (+ hadoop and dependencies) #25

Open
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

echarles
Copy link
Member

DISCLAIMER: The state of this documents is pre-alpha and [WIP] (Work in Progress). It contains some [TDV] (To Be Validated) and [TBC] (To Be Checked) and is not intended to be merged in the Spark documentation as it is.

The goal of this document is to review the current submission process in cluster mode and introduce a way to also fully support the client mode thtat is mandatory for the exploraty projects (notebooks...). We want to ensure that the way the Spark Driver and Executors lifecycle is correctly understood to take correct decisions to let evolve the architecture. The Shuffle Service and Resource Staging Server are not impacted by the previous considerations, so we don't cover them.

@foxish
Copy link
Member

foxish commented Jan 16, 2018

Thanks Eric. cc/ @apache-spark-on-k8s/contributors

Copy link

@squito squito left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm very new to the k8s integration, still getting up to speed, just some comments from a first read, perhaps not relevant for the target audience here.

```

```scala
// Via cluster mode, we do not have full config as the hadoop conf dir is not mounted by configmap propagation but only available in the Spark Context.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this supposed to say "client mode"?


It is important to acknowledge this as during the creation of the manager and schedulers described in earlier point, some definitions are created and some communication with the Kubernetes cluster (the REST API) are instanciated.

In the `InCluster` case, as pre-requisite to the next steps, we ask the user to define a property `spark.kubernetes.driver.pod.name` with the value being the exact name of the Pod where he is.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"where they are" -- we can be gender neutral


### Submit in client mode from a client with restricted network access

This is not possible. When the executor is invoked.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is a little vague -- can you explain what restrictions don't work? obviously, if there is no communication out from the client, nothing is going to work. But one might expect that you only need some very limited communication from the client. Eg., only client to driver pod, but not client to executors.


# Dependencies

For `cluster-mode`, we have the configuration orchestrator and its Steps which ensure that when `--jars` or `-Dspark.jars` are defined (same reaseonaring applies for `--files`):
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this comment really goes from all cluster managers with spark, just came to my mind as I was reading this and something you might want to consider.

one thing which has tripped up a ton of users is understanding when jars become available and how you override various things. As an extreme example, you can't use "--jars" to replace the code of spark's Executor, as the executor itself has already started by that point. (Nobody would want to do that, but there are plenty of cases where you might want to replace some dependency, and its tricky because sometimes they are loaded before they you get to downloading and loading "--jars".)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants