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
clusterFollow 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.
| Package | Description |
|---|---|
| Apache Spark | A unified analytics engine for large-scale data processing. |
| Java OpenJDK | A runtime environment for Spark. |
| Scala | A programming language that Spark is built with, providing a powerful interface to Spark’s APIs. |
| NGINX | A high-performance HTTP server and reverse proxy. |
| UFW (Uncomplicated Firewall) | A firewall utility for managing firewall rules. |
| Fail2ban | An 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 field | API/CLI key | Description |
|---|---|---|
| Required options | ||
| Linode API token | token_password | Applies 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.
|
| Email address (for the Let's Encrypt SSL certificate) | soa_email_address | The email used to receive notifications about the renewal of the Let's Encrypt SSL certificate. |
| Limited sudo user | sudo_username | Your 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 |
| Apache Spark Version | spark_version | The version of Apache Spark. The only allowed value is 3.5.5. |
| Spark UI user | spark_user | The username you want to use to log in to the Spark UI. |
| Advanced options | ||
| Add Account SSH Keys to All Nodes | add_ssh_keys | Applies 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 |
| Subdomain | subdomain | Applies to a custom domain. The subdomain you want to use, like blog for blog.example.com. Use it only if you specify a Domain. |
| Domain | domain | Applies 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 Settings | clusterheader | Set to Yes by default. This is to provide details for your cluster settings, like its name and size. |
| Cluster Name | cluster_name | Applies to cluster settings. A descriptive name for your cluster. |
| Apache Spark Worker Count | cluster_size | Applies 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
.credentialsfile in the home directory, along with application-specific passwords. Log in to your instance asrootthrough the Lish console or SSH, then runcat /home/$USERNAME/.credentialsto view its contents.- You can automatically configure a custom domain (optional) during deployment. To do that:
- First, configure your domain to use Linode’s name servers via your registrar. See Configure your domain's authoritative name servers for details.
- 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:
-
Log in to your Linode instance as a
rootuser using either the Lish console or SSH. -
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/motdTo delete the motd, run
rm /etc/motd. -
Then run
cat /home/$SUDO_USER/.credentialsto see the file contents. It contains the credentials for the sudo user you created. For example, if you created a user namedadmin, the credentials file can be found in/home/admin/.credentials. -
Provide your username and password from the
.credentialsfile 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-shellis 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.
Updated 14 days ago
