[LIVY-1059] Add livy.spark.yarn.queue configuration to set default YARN queue

## What changes were proposed in this pull request?

This PR introduces support for configuring a default YARN queue at the Livy server level via a new configuration property: `livy.spark.yarn.queue`.

Previously, if a client did not explicitly specify a YARN queue parameter (`queue`) in their session creation payload, the session would fall back to the global Hadoop cluster's default YARN queue. This change allows cluster administrators to isolate Livy-generated workloads into a specific default queue without requiring end-users to pass it manually in every API request.

When a client provides `queue` in the session creation request, that value takes priority over the server default.

## How was this patch tested?

- Added unit tests in `BatchSessionSpec` that verify `--queue` is passed to spark-submit when using the LivyConf default or a user-provided queue
- Added unit tests in `InteractiveSessionSpec` that verify the resolved queue is stored on the session
- Manual API validation against a YARN cluster
6 files changed
tree: cd2c3506c6bba05aec44bd9c986c0364cbddf79b
  1. .github/
  2. api/
  3. assembly/
  4. bin/
  5. client-common/
  6. client-http/
  7. conf/
  8. core/
  9. coverage/
  10. dev/
  11. docs/
  12. examples/
  13. integration-test/
  14. python-api/
  15. repl/
  16. rsc/
  17. scala/
  18. scala-api/
  19. server/
  20. test-lib/
  21. thriftserver/
  22. .asf.yaml
  23. .gitignore
  24. .rat-excludes
  25. .travis.yml
  26. checkstyle-suppressions.xml
  27. checkstyle.xml
  28. LICENSE
  29. NOTICE
  30. pom.xml
  31. README.md
  32. scalastyle.xml
README.md

Apache Livy

Unit Tests Integration Tests

Apache Livy is an open source REST interface for interacting with Apache Spark from anywhere. It supports executing snippets of code or programs in a Spark context that runs locally or in Apache Hadoop YARN.

  • Interactive Scala, Python and R shells
  • Batch submissions in Scala, Java, Python
  • Multiple users can share the same server (impersonation support)
  • Can be used for submitting jobs from anywhere with REST
  • Does not require any code change to your programs

Pull requests are welcomed! But before you begin, please check out the Contributing section on the Community page of our website.

Online Documentation

Guides and documentation on getting started using Livy, example code snippets, and Livy API documentation can be found at livy.apache.org.

Before Building Livy

To build Livy, you will need:

Debian/Ubuntu:

  • mvn (from maven package or maven3 tarball)
  • openjdk-8-jdk (or Oracle JDK 8)
  • Python 3.x+
  • R 3.x

Redhat/CentOS:

  • mvn (from maven package or maven3 tarball)
  • java-1.8.0-openjdk (or Oracle JDK 8)
  • Python 3.x+
  • R 3.x

MacOS:

  • Xcode command line tools
  • Oracle's JDK 1.8
  • Maven (Homebrew)
  • Python 3.x+
  • R 3.x

Required python packages for building Livy:

  • cloudpickle
  • requests
  • requests-kerberos
  • flake8
  • flaky
  • pytest

To run Livy, you will also need a Spark installation. You can get Spark releases at https://spark.apache.org/downloads.html.

Livy requires Spark 3.0+. You can switch to a different version of Spark by setting the SPARK_HOME environment variable in the Livy server process, without needing to rebuild Livy.

Building Livy

Livy is built using Apache Maven. To check out and build Livy, run:

git clone https://github.com/apache/livy.git
cd livy
mvn package

You can also use the provided Dockerfile:

git clone https://github.com/apache/livy.git
cd livy
docker build -t livy-ci dev/docker/livy-dev-base/
docker run --rm -it -v $(pwd):/workspace -v $HOME/.m2:/root/.m2 livy-ci mvn package -Pspark3 -Pscala-2.12

Note: The docker run command maps the maven repository to your host machine's maven cache so subsequent runs will not need to download dependencies.

By default Livy is built against Apache Spark 3.3.4, but the version of Spark used when running Livy does not need to match the version used to build Livy. Livy internally handles the differences between different Spark versions.

The Livy package itself does not contain a Spark distribution. It will work with any supported version of Spark without needing to rebuild.

Build Profiles

FlagPurpose
-Phadoop2Choose Hadoop2 based build dependencies
-PthriftserverBuild and test Livy Thrift Server modules
-Pspark3Choose Spark 3.x based build dependencies
-Pscala-2.12Choose Scala 2.12 based build dependencies