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

[BEAM-479] Name local Spark RunnableOnService profile more precisely #711

Closed
wants to merge 1 commit into from

Conversation

kennknowles
Copy link
Member

@kennknowles kennknowles commented Jul 22, 2016

Be sure to do all of the following to help us incorporate your contribution
quickly and easily:

  • Make sure the PR title is formatted like:
    [BEAM-<Jira issue #>] Description of pull request
  • Make sure tests pass via mvn clean verify. (Even better, enable
    Travis-CI on your fork and ensure the whole test matrix passes).
  • Replace <Jira issue #> in the title with the actual Jira issue
    number, if there is one.
  • If this contribution is large, please file an Apache
    Individual Contributor License Agreement.

Settling on the name local-runnable-on-service-tests for all profiles with a local endpoint. That way, this profile plus the desired module will suffice to run against a local endpoint if possible.

@kennknowles
Copy link
Member Author

R: @amitsela

Worked with @dhalperi to more directly set up and invoke the RunnableOnService tests as a postcommit. Trying to get build times down a bit and make all runners share similar configs.

@kennknowles
Copy link
Member Author

Test failure is Travis timeout on Mac infrastructure, which is happening broadly. Not related to this PR.

@amitsela
Copy link
Member

amitsela commented Jul 22, 2016

What does a local endpoint mean ? How do other runners execute ? how are they different ? except for supporting different capabilities of the model

@kennknowles
Copy link
Member Author

That's a really good question, worth nailing down. Intuitively it means "no cluster needs to be set up". I guess the important things would be:

  • No set up
  • No network needed (so a hermetic test that starts a real non-local cluster won't work)
  • No credentials

It applies not just to runners but also to tests. For example, KafkaIO can run an embedded Kafka, and that will work with local Flink & Spark. Whereas Dataflow doesn't have a local version since it is a hosted service.

Does this seem reasonable? If not, is there somewhere we can go with this idea?

@kennknowles
Copy link
Member Author

BTW I think the Jenkins failure is a hardcoded port that is being allocated by two jobs running in parallel on the same box.

@amitsela
Copy link
Member

Generally makes sense, even more, most tests on runners will probably be local because of setup/teardown overhead and the cost of maintaining cluster/s for constant testing. Also, most functionality is OK to test this way, except for serialization maybe.
But having said that, doesn't it mean that Dataflow is the exception here ? AFAIK Spark, Flink and even Gearpump run tests on a local instance.
So unless I'm missing something, there should probably be a cluster-runnable-on-service-tests instead of (or in addition to) local-runnable-on-service-tests.
WDYT ?

@dhalperi
Copy link
Contributor

Local testing is excellent for unit tests or "fast postcommits". But I think we want to make it easier and easier to test Beam on remote infra of all sorts -- this is our primary intended use case.

E.g., I'd like there to be a post-commit that runs on a permanent Flink cluster, a permanent Spark cluster, etc. These are the things we need to make sure work well!

@kennknowles
Copy link
Member Author

I'm for local-runnable-on-service-tests and cluster-runnable-on-service-tests. They should probably share the same base re-configuration of the runnable-on-service-tests execution, setting up deps to scan and exclusions.

The cluster-runnable-on-service-tests run has the complication that it requires credentials that will depend on who is running them, so you'll likely have to provide many options at the commandline, thus the savings of setting up the --runner=XYZ is minimal. But I generally like the idea of these both setting up some useful defaults so the mvn user only has to provide the necessary bits.

@amitsela
Copy link
Member

+1 for local-* and cluster-*
One thing to consider - which cluster ? or to be accurate resource-manager. Spark can run it's own (Standalone Mode), use YARN or Mesos. According to the latest survey by Databricks Standalone is in the lead (48%), with YARN tailing it (40%) while Mesos not too popular.
I'd vote for Standalone to test the most popular use case while avoiding the additional complexity of maintaining YARN on this cluster.

@kennknowles
Copy link
Member Author

I agree that we should test the most common use case. I don't have much more to say than that as far as how and where it might be provisioned in the future. Maybe it is a good discussion for the dev list?

@amitsela
Copy link
Member

LGTM. I'll publish in dev list tomorrow.

Settling on the name "local-runnable-on-service-tests" for
all profiles with a local endpoint. That way, this profile plus
the desired module will suffice to run against a local endpoint if
possible.
@asfgit asfgit closed this in fcf6b1d Aug 4, 2016
@kennknowles kennknowles deleted the remove-spark-local branch November 10, 2016 03:10
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.

None yet

3 participants