Charmed Spark K8s

Canonical Publisher | bundle

Platform:

Channel Revision Published
latest/edge 4 06 Aug 2024
3.4/edge 4 06 Aug 2024
juju deploy spark-k8s-bundle --channel edge

Learn about configurations >

  • driver-pod-template | string

    Define K8s driver pod from a file accessible to the workload. Ex.: "s3a://bucket/template.yml". Is equivalent to the following Spark configuration: spark.kubernetes.driver.podTemplateFile=<driver-pod-template>

  • enable-dynamic-allocation | boolean

    Enable dynamic allocation of pods for Spark jobs.

  • executor-cores | int

    Set K8s executor pods cpu limit. Is equivalent to the following Spark configuration: spark.executor.cores=4

  • executor-memory | int

    Set K8s executor pods memory limit (in GB). Is equivalent to the following Spark configuration: spark.executor.memory=4G

  • executor-pod-template | string

    Define K8s executor pods from a file accessible to the workload. Ex.: "s3a://bucket/template.yml". Is equivalent to the following Spark configuration: spark.kubernetes.executor.podTemplateFile=<executor-pod-template>

  • expose-external | string

    Default: false

    The mode in which the service should be exposed externally. Valid values are false, nodeport and loadbalancer.

  • gpu-enable | boolean

    Enable GPU acceleration for the SparkSQLEngine. This option override 'enable-dynamic-allocation' toggling auto-scaling for executor pods. Is equivalent to the following Spark configuration: spark.plugins=com.nvidia.spark.SQLPlugin spark.executor.resource.gpu.amount=1 spark.executor.resource.gpu.vendor=nvidia.com spark.kubernetes.container.image=GPU_JOB_OCI_IMAGE spark.executor.resource.gpu.discoveryScript=/opt/getGpusResources.sh kyuubi.session.engine.idle.timeout=PT3M

  • gpu-engine-executors-limit | int

    Default: 1

    Limit the number of GPUs an engine can schedule executor pods on. If -1, use all GPUs available. The more tenants are expected, the less this value should be. This option should be set to either -1 or a positive integer. This option is ignored if 'gpu-enable' is set to false. Is equivalent to the following Spark configuration: spark.executor.instances=1

  • gpu-pinned-memory | int

    Default: 1

    Set the host memory (in GB) per executor reserved for fast data transfer on GPUs. This also sets the executor memory overhead to be 1GB larger. This option is ignored if 'gpu-enable' is set to false. Is equivalent to the following Spark configuration: spark.rapids.memory.pinnedPool.size=1G spark.executor.memoryOverhead=2G # 1 + 1

  • iceberg-catalog-name | string

    Default: iceberg

    The name of the catalog that has Iceberg capabilities.

  • k8s-node-selectors | string

    Comma separated label:value selectors for K8s pods Ex.: "<label1>:<value1>,<label2>:<value2>". Is equivalent to the following Spark configuration: spark.kubernetes.node.selector.<label1>=<value1> spark.kubernetes.node.selector.<label2>=<value2> The desired configuration will be applied for both driver and executor pods.

  • loadbalancer-extra-annotations | string

    Default: {}

    Optional extra annotations to be supplied to the load balancer service.

  • namespace | string

    The namespace to be used by driver to create executor pods. If not configured, the model namespace will be used.

  • pause-after-unit-refresh | string

    Default: first

    Wait for manual confirmation to resume refresh after these units refresh Allowed values: "all", "first", "none"

  • profile | string

    Default: production

    Profile representing the scope of the deployment, and used to enable high-level customization of system configurations, resource checks/allocation, warning levels, etc. Allowed values are: "production", "staging" and "testing"

  • service-account | string

    Default: kyuubi-spark-engine

    The service account to be used by driver to create executor pods.

  • system-users | secret

    Configure the system user 'admin' and it's password. This needs to be a Juju secret URI pointing to a secret that contains the following content: `admin: <password>`. If this config option is not provided, the charm will generate a random password for the admin user.

  • tls-client-private-key | secret

    A Juju secret URI of a secret containing the private key for client-to-server TLS certificates. This needs to be a Juju secret URI pointing to a secret that has the content { private-key: <key> }, where <key> is the key to be used by the charm to generate Certificate Signing Request (CSR). If this config option is not provided, the charm will generate a new private key and use it instead.