Apache Spark (cluster)

Deploy Apache Spark, an open source unified analytics engine for large-scale data processing. It's designed for both batch and streaming data processing.

This app deploys an Apache Spark standalone cluster with one master node and two worker nodes, configured with secure web access and ready to run in a distributed environment.

1. Deploy Apache Spark cluster

 Estimated deployment time: 5–7 minutes

Follow the deployment instructions from the Get started section to configure the app, deploy it, and verify software installation.

For information on the app-specific configurations, see the Configuration options section.

Software included

Software installed on your Linode when deploying the app.

PackageDescription
Apache SparkA unified analytics engine for large-scale data processing.
Java OpenJDKA runtime environment for Spark.
ScalaA programming language that Spark is built with, providing a powerful interface to Spark’s APIs.
NGINXA high-performance HTTP server and reverse proxy.
UFW (Uncomplicated Firewall)A firewall utility for managing firewall rules.
Fail2banAn intrusion prevention software framework for protection against brute-force attacks.

Base distribution and plan

  • Supported distribution: Ubuntu 24.04 LTS
  • Recommended plan: 4GB RAM

Configuration options

Configure the required options to deploy your instance. For additional customization, add advanced options.

The table maps the Cloud Manager UI fields to their corresponding API/CLI keys (stackscript_data) required for automated deployments.

StackScript ID: 1403818

UI fieldAPI/CLI keyDescription
Required options
Linode API tokentoken_passwordApplies to a custom domain. The Linode API token if you want to use Linode's DNS Manager to manage DNS records for your custom domain. It's also required to deploy additional Linode instances as part of this cluster. Follow Manage personal access tokens to get your token on your account with Read/Write access to Domains and Linodes.
  • If you provide the token along with the subdomain and domain, the installation attempts to create DNS records via the Linode API.
  • If you don't provide the token, you need to manually configure your DNS records through your DNS provider and point them to the IP address of the new instance.
Email address (for the Let's Encrypt SSL certificate)soa_email_addressThe email used to receive notifications about the renewal of the Let's Encrypt SSL certificate.
Limited sudo usersudo_usernameYour preferred username for the limited sudo user, entered without any capital letters, spaces, or special characters.
When adding a limited sudo user, the user is created with a strong generated password for your new Linode instance, and the account is assigned to the sudo group, which provides elevated permissions when running commands with the sudo prefix.
Note: For easier and more secure access with the sudo user, add an account SSH key for the Cloud Manager user during deployment and select that user as an authorized_user. Their SSH pubkey will be assigned to both the root and limited sudo users.
Apache Spark Versionspark_versionThe version of Apache Spark. The only allowed value is 3.5.5.
Spark UI userspark_userThe username you want to use to log in to the Spark UI.
Advanced options
Add Account SSH Keys to All Nodesadd_ssh_keysApplies to a limited sudo user. When set to Yes (default), it allows the root user to log in with SSH.
Note: When you disable the root user from logging in over SSH and don't provide a valid Account SSH Key assigned to the authorized_user, you can still switch to the root user. To do that, log in as root via the Lish console and run cat /home/$USERNAME/.credentials to view the generated password for the limited sudo user.
SubdomainsubdomainApplies to a custom domain. The subdomain you want to use, like blog for blog.example.com. Use it only if you specify a Domain.
DomaindomainApplies to a custom domain. The domain name you want to use, like example.com. Use it only if you specify a Linode API token.
Cluster SettingsclusterheaderSet to Yes by default. This is to provide details for your cluster settings, like its name and size.
Cluster Namecluster_nameApplies to cluster settings. A descriptive name for your cluster.
Apache Spark Worker Countcluster_sizeApplies to cluster settings. The size of the Spark cluster. This cluster is deployed with a master node and two worker nodes. Possible values are: 3, 4, 5, 6, 7, 8, 9, or 10. Defaults to 3.

Notes:

  • After the app deployment completes, the password for your limited sudo user is generated and stored in the .credentials file in the home directory, along with application-specific passwords. Log in to your instance as root through the Lish console or SSH, then run cat /home/$USERNAME/.credentials to view its contents.
  • You can automatically configure a custom domain (optional) during deployment. To do that:
    1. First, configure your domain to use Linode’s name servers via your registrar. See Configure your domain's authoritative name servers for details.
    2. Once you complete that, specify the Linode API token, subdomain, and domain for the app in Cloud Manager or via API/CLI/Terraform.

Use API, CLI, or Terraform

In addition to deploying the app to a new Linode instance via Cloud Manager, you can also use the Linode API, CLI, or Terraform. When running the operation, you need to provide the StackScript ID, supported Linux distribution, and app-specific fields along with the standard Linode deployment configurations.

Note: Generate a personal access token to authenticate your API, CLI, or Terraform requests.

curl --location 'https://api.linode.com/v4/linode/instances' \
    --header 'Content-Type: application/json' \
    --header 'Accept: application/json' \
    --header 'Authorization: Bearer abc123def456hij789klm' \
    --data-raw '{
        "region": "us-east",
        "type": "g6-standard-2",
        "image": "linode/ubuntu24.04",
        "label": "my-apache-spark-cluster-one-click-app",
        "root_pass": "@C0mpl3x#P@ssw0rd",
        "stackscript_id": 1403818,
        "stackscript_data": {
            "token_password": "abc123def456hij789klm",
            "soa_email_address": "jsmith@example.com",
            "sudo_username": "jsmith",
            "spark_version": "3.5.5",
            "spark_user": "jsmith-admin"
        }
    }'
linode-cli linodes create \
    --region us-east \
    --type g6-standard-2 \
    --label my-apache-spark-cluster-one-click-app \
    --image linode/ubuntu24.04 \
    --root_pass @C0mpl3x#P@ssw0rd \
    --stackscript_id 1403818 \
    --stackscript_data '{"token_password":"abc123def456hij789klm", "soa_email_address":"jsmith@example.com", "sudo_username":"jsmith", "spark_version":"3.5.5", "spark_user":"jsmith-admin"}'
resource "linode_instance" "my-linode" {
    region         = "us-east"
    type           = "g6-standard-2"
    label          = "my-apache-spark-cluster-one-click-app"
    image          = "linode/ubuntu24.04"
    root_pass      = "@C0mpl3x#P@ssw0rd"
    stackscript_id = 1403818
    stackscript_data = {
        "token_password"    = "abc123def456hij789klm"
        "soa_email_address" = "jsmith@example.com"
        "sudo_username"     = "jsmith"
        "spark_version"     = "3.5.5"
        "spark_user"        = "jsmith-admin"
    }
}

2. Access Apache Spark

Once the Apache Spark cluster is deployed, you can access the Apache Spark UI. To do that:

  1. Log in to your Linode instance as a root user using either the Lish console or SSH.

  2. After logging in, you can find the URL to the Spark UI in the motd (message of the day).

    The URL is either the domain you entered when deploying the cluster or the rDNS value of the master node. To learn more about viewing the rDNS value, see Manage IP addresses on a Linode.

    cat /etc/motd

    To delete the motd, run rm /etc/motd.

  3. Then run cat /home/$SUDO_USER/.credentials to see the file contents. It contains the credentials for the sudo user you created. For example, if you created a user named admin, the credentials file can be found in /home/admin/.credentials.

  4. Provide your username and password from the .credentials file on the Spark UI login page.

    Notes:

    • The Apache Spark cluster needs access to external storage, such as Amazon S3 or S3-compatible storage, HDFS, Azure Blob Storage, Apache HBase, or your local filesystem. For more details on this, see Integration with Cloud Infrastructures.
    • The spark-shell is included with the installation. It's an interactive command-line shell provided by Apache Spark that allows you to interact with and perform data queries on a Spark cluster in real-time.

Additional resources

For more information about the installed packages, see their official documentation.

📘

Note that we can't vouch for the accuracy or timeliness of externally hosted resources.


Did this page help you?