# [Benchmark the performance of Flink on Arm servers](https://learn.arm.com/learning-paths/servers-and-cloud-computing/flink/)

## In this learning path

- [Introduction](https://learn.arm.com/learning-paths/servers-and-cloud-computing/flink/)
- [Setup and Configure Flink](https://learn.arm.com/learning-paths/servers-and-cloud-computing/flink/setup_flink/)
- [Setup and Config Nexmark](https://learn.arm.com/learning-paths/servers-and-cloud-computing/flink/setup_nexmark/)
- [Benchmark Flink with nexmark-flink on Arm](https://learn.arm.com/learning-paths/servers-and-cloud-computing/flink/benchmark_flink/)
- [Next Steps](https://learn.arm.com/learning-paths/servers-and-cloud-computing/flink/_next-steps/)

## About this Learning Path
| Skill level:         | Introductory           |
|----------------------|------------------------|
| Reading time:        | 30 min                 |
| Last updated:        | 11 Sep 2026            |

| Author:                  | Ying Yu, Arm                  |
|--------------------------|-------------------------------|
| Arm IP:                  | [Neoverse](https://support.arm.com/?tab=compute-ip&Product%20Type=Infrastructure%20Processors) |
| Tags:                    | Databases, AWS Graviton, Microsoft Azure Cobalt, Google Axion, Oracle Cloud Infrastructure (OCI) Ampere Compute, Linux, Flink, Java, Nexmark, Runbook |

### Who is this for?
This is an introductory topic for software developers using Flink as their stream processing and batch processing framework on Arm servers.

### What will you learn?
Upon completion of this Learning Path, you will be able to:
- Install and run Flink on an Arm server
- Benchmark the performance of Flink

### Prerequisites
Before starting, you will need the following:
- An Arm based instance server from a cloud service provider.

### Summary
You’ll install Java and configure a standalone Apache Flink cluster on an Arm-based Linux server. First, you’ll meet the Nexmark prerequisites, start Flink with the provided scripts, prepare the benchmark environment, and run selected queries. Next, you’ll use the completed runs to verify that the cluster starts cleanly, and to understand how Java versions and script locations affect the workflow.

### Frequently asked questions
<details>
<summary>Which Java version should I use when I run Flink and Nexmark?</summary>
Flink requires JDK 11, and Nexmark requires JDK 1.8.x or higher. Use JDK 11 to satisfy both requirements.
</details>

<details>
<summary>Where should I run the Flink and Nexmark scripts?</summary>
Run the scripts on the master node. Use paths such as `~/flink-benchmark/flink-1.17.2/bin/start-cluster.sh` and `~/flink-benchmark/nexmark-flink/bin/setup_cluster.sh`.
</details>

<details>
<summary>Which configuration values must point to the Flink JobManager?</summary>
Set `jobmanager.rpc.address` in `flink-conf.yaml` and `nexmark.metric.reporter.host` in `nexmark.yaml` to the JobManager address. You can use the JobManager IP or the default `localhost:8081` when the components run on the same host.
</details>

<details>
<summary>What should I check about SSH before I run the scripts?</summary>
Ensure `sshd` is running because the Flink and Nexmark scripts use SSH to manage remote components. Start or enable the service before continuing.
</details>

<details>
<summary>How can I run specific Nexmark queries?</summary>
Pass a comma-separated query list to `run_query.sh`, such as `bash ~/flink-benchmark/nexmark-flink/bin/run_query.sh q1,q2`. The script runs the selected queries and reports their benchmark results.
</details>
