Skip to content

Commit fc6ec2d

Browse files
Merge pull request #2682 from madeline-underwood/flink
Flink_JA to sign off
2 parents fa36765 + aebab93 commit fc6ec2d

6 files changed

Lines changed: 90 additions & 87 deletions

File tree

content/learning-paths/servers-and-cloud-computing/flink-on-gcp/_index.md

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,15 @@
11
---
22
title: Deploy Apache Flink on Google Cloud C4A (Arm-based Axion VMs)
3-
4-
draft: true
5-
cascade:
6-
draft: true
73

84
minutes_to_complete: 30
95

10-
who_is_this_for: This learning path is intended for software developers deploying and optimizing Apache Flink workloads on Linux/Arm64 environments, specifically using Google Cloud C4A virtual machines powered by Axion processors.
6+
who_is_this_for: This is an introductory topic for developers deploying and optimizing Apache Flink workloads on Linux/Arm64 environments, specifically using Google Cloud C4A virtual machines powered by Axion processors.
117

128
learning_objectives:
139
- Provision an Arm-based SUSE SLES virtual machine on Google Cloud (C4A with Axion processors)
14-
- Install Apache Flink on a SUSE Arm64 (C4A) instance
15-
- Validate Flink functionality by starting the Flink cluster and running a simple baseline job (e.g., WordCount) on the Arm64 VM
16-
- Benchmark Flink performance using internal JMH-based micro-benchmarks on Arm64 (Aarch64) architecture
10+
- Install and configure Apache Flink on an Arm64 instance
11+
- Validate Flink functionality by starting the cluster and running a baseline job
12+
- Benchmark Flink performance using JMH-based microbenchmarks
1713

1814
prerequisites:
1915
- A [Google Cloud Platform (GCP)](https://cloud.google.com/free) account with billing enabled
@@ -23,7 +19,7 @@ author: Pareena Verma
2319

2420
##### Tags
2521
skilllevels: Introductory
26-
subjects: Databases
22+
subjects: Performance and Architecture
2723
cloud_service_providers: Google Cloud
2824

2925
armips:
@@ -48,7 +44,7 @@ further_reading:
4844

4945
- resource:
5046
title: Flink documentation
51-
link: https://nightlies.apache.org/flink/flink-docs-lts/
47+
link: https://nightlies.apache.org/flink/flink-docs-lts/
5248
type: documentation
5349

5450
- resource:

content/learning-paths/servers-and-cloud-computing/flink-on-gcp/background.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
11
---
2-
title: Getting started with Apache Flink on Google Axion C4A (Arm Neoverse-V2)
2+
title: Get started with Apache Flink on Google Axion C4A
33

44
weight: 2
55

66
layout: "learningpathall"
77
---
88

9-
## Google Axion C4A Arm instances in Google Cloud
9+
## Explore Google Axion C4A Arm instances
1010

1111
Google Axion C4A is a family of Arm-based virtual machines built on Google’s custom Axion CPU, which is based on Arm Neoverse-V2 cores. Designed for high-performance and energy-efficient computing, these virtual machines offer strong performance for modern cloud workloads such as CI/CD pipelines, microservices, media processing, and general-purpose applications.
1212

13-
The C4A series provides a cost-effective alternative to x86 virtual machines while leveraging the scalability and performance benefits of the Arm architecture in Google Cloud.
13+
The C4A series provides a cost-effective alternative to x86 virtual machines while leveraging the scalability and performance benefits of Arm architecture in Google Cloud.
1414

15-
To learn more about Google Axion, refer to the [Introducing Google Axion Processors, our new Arm-based CPUs](https://cloud.google.com/blog/products/compute/introducing-googles-new-arm-based-cpu) blog.
15+
To learn more about Google Axion, see the Google blog [Introducing Google Axion Processors, our new Arm-based CPUs](https://cloud.google.com/blog/products/compute/introducing-googles-new-arm-based-cpu).
1616

17-
## Apache Flink
17+
## Explore Apache Flink
1818

19-
[Apache Flink](https://flink.apache.org/) is an open-source, distributed stream and batch data processing framework** developed under the [Apache Software Foundation](https://www.apache.org/).
19+
[Apache Flink](https://flink.apache.org/) is an open-source, distributed stream and batch data processing framework developed under the [Apache Software Foundation](https://www.apache.org/).
2020

2121
Flink is designed for high-performance, low-latency, and stateful computations on both unbounded (streaming) and bounded (batch) data. It provides a robust runtime and APIs in Java, Scala, and Python for building scalable, fault-tolerant data processing pipelines.
2222

Lines changed: 24 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
title: Apache Flink Baseline Testing on Google Axion C4A Arm Virtual Machine
2+
title: Test Flink baseline functionality
33
weight: 5
44

55
### FIXED, DO NOT MODIFY
@@ -9,10 +9,10 @@ layout: learningpathall
99
## Apache Flink Baseline Testing on GCP SUSE VM
1010
In this section you will perform baseline testing for Apache Flink after installation on a GCP SUSE VM. Baseline testing validates that your installation is correct, the JVM is functioning properly, and Flink’s JobManager/TaskManager can execute jobs successfully.
1111

12-
### Install Maven (Required to Build and Run Flink Jobs)
12+
## Install Maven (Required to Build and Run Flink Jobs)
1313
Before running Flink jobs, ensure that Maven is installed on your VM. Many Flink examples and real-world jobs require Apache Maven to compile Java applications.
1414

15-
Download Maven and extract it:
15+
## Install Maven
1616

1717
```console
1818
cd /opt
@@ -21,21 +21,22 @@ sudo tar -xvzf apache-maven-3.8.6-bin.tar.gz
2121
sudo mv apache-maven-3.8.6 /opt/maven
2222
```
2323

24-
### Configure Environment Variables
24+
## Configure environment variables
2525
Configure the environment so Maven commands can be run system-wide:
2626

2727
```console
2828
echo "export M2_HOME=/opt/maven" >> ~/.bashrc
2929
echo "export PATH=\$M2_HOME/bin:\$PATH" >> ~/.bashrc
3030
source ~/.bashrc
3131
```
32+
3233
Verify the Maven installation:
3334

3435
```console
3536
mvn -version
3637
```
3738

38-
The output should look like:
39+
The output is similar to:
3940

4041
```output
4142
pache Maven 3.8.6 (84538c9988a25aec085021c365c560670ad80f63)
@@ -45,62 +46,60 @@ Default locale: en, platform encoding: UTF-8
4546
OS name: "linux", version: "5.14.21-150500.55.124-default", arch: "aarch64", family: "unix"
4647
```
4748

48-
At this point, both Java and Maven are installed and ready to use.
49+
## Start the Flink cluster
4950

50-
### Start the Flink Cluster
5151
Before launching Flink, open port 8081 in the Google Cloud Firewall Rules so that the Web UI is reachable externally.
5252

53-
Start the standalone Flink cluster using the provided startup script:
54-
5553
```console
5654
cd $FLINK_HOME
5755
./bin/start-cluster.sh
5856
```
5957

60-
You should see output similar to:
58+
The output is similar to:
59+
6160
```output
6261
Starting cluster.
6362
[INFO] 1 instance(s) of standalonesession are already running on lpprojectsusearm64.
6463
Starting standalonesession daemon on host lpprojectsusearm64.
6564
Starting taskexecutor daemon on host lpprojectsusearm64.
6665
```
6766

68-
Verify that the Flink Processes (JobManager and TaskManager) are running:
67+
Verify that the Flink processes (JobManager and TaskManager) are running:
6968

7069
```console
7170
jps
7271
```
7372

74-
You should see output similar to:
73+
The output is similar to:
74+
7575
```output
7676
21723 StandaloneSessionClusterEntrypoint
7777
2621 Jps
7878
2559 TaskManagerRunner
7979
```
80-
StandaloneSessionClusterEntrypoint is the JobManager process
81-
TaskManagerRunner is the worker responsible for executing tasks and maintaining state.
8280

83-
### Access the Flink Web UI
81+
`StandaloneSessionClusterEntrypoint` is the JobManager process, and `TaskManagerRunner` is the worker responsible for executing tasks and maintaining state.
8482

85-
In a browser, navigate to:
83+
## Access the Flink Web UI
84+
85+
In a browser, navigate to `http://<VM_IP>:8081`.
8686

87-
```console
88-
http://<VM_IP>:8081
89-
```
9087
You should see the Flink Dashboard:
91-
![Flink Dashboard alt-text#center](images/flink-dashboard.png "Figure 1: Flink Dashboard")
88+
89+
![Screenshot of the Apache Flink Dashboard web interface showing the Overview page with cluster status, available task slots, running jobs count, and system metrics displayed in a clean web UI alt-text#center](images/flink-dashboard.png "Flink Dashboard")
9290

9391
A successfully loaded dashboard confirms the cluster network and UI functionality. This serves as the baseline for network and UI validation.
9492

95-
### Run a Simple Example Job
96-
A basic sanity test is to run the built-in WordCount example:
93+
## Run a simple example job
94+
A basic check is to run the built-in WordCount example:
9795

9896
```console
9997
cd $FLINK_HOME
10098
./bin/flink run examples/streaming/WordCount.jar
10199
```
102-
You can monitor the job in the Web UI or check console logs. A successful WordCount run confirms that your Flink cluster lifecycle works end-to-end.
103100

104-
![Flink Dashboard alt-text#center](images/wordcount.png "Figure 2: Word Count Job")
101+
You can monitor the job in the Web UI or check console logs.
102+
103+
![Screenshot of the Flink Dashboard showing a completed WordCount job with execution details, task metrics, and job timeline visible in the web interface alt-text#center](images/wordcount.png "WordCount job in Flink Dashboard")
105104

106-
Flink baseline testing has been completed. You can now proceed to Flink benchmarking.
105+
Flink baseline testing is complete. You can now proceed to Flink benchmarking.
Lines changed: 33 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
---
2-
title: Apache Flink Benchmarking
2+
title: Benchmark Flink performance
33
weight: 6
44

55
### FIXED, DO NOT MODIFY
66
layout: learningpathall
77
---
88

9+
## Benchmark Apache Flink performance
910

10-
## Apache Flink Benchmarking
11-
This section walks you through running Apache Flink microbenchmarks on a Google Cloud Axion C4A (Arm64) SUSE VM. You will clone the official Flink-benchmarks repository, build the benchmark suite, explore available tests, and run the Remote Channel Throughput Benchmark, one of the key indicators of Flink’s communication and data-transfer performance.
11+
This section walks you through running Apache Flink microbenchmarks on a Google Cloud Axion C4A (Arm64) SUSE VM. You will clone the official Flink-benchmarks repository, build the benchmark suite, and run the Remote Channel Throughput Benchmark.
1212

13-
### Clone the Repository
13+
## Clone the repository
1414
Clone the official Flink microbenchmarks repository:
1515

1616
```console
@@ -20,39 +20,41 @@ cd flink-benchmarks
2020
```
2121
This repository contains microbenchmarks built using JMH (Java Microbenchmark Harness), widely used for JVM-level performance testing.
2222

23-
### Build the Benchmarks with Maven
23+
## Build the benchmarks with Maven
2424
Compile the benchmarks and create the executable JAR:
2525

2626
```console
2727
mvn clean package -DskipTests
2828
```
2929
What this does:
30-
* clean removes previous build artifacts
31-
* package compiles the code and produces benchmark JARs
30+
* `clean` removes previous build artifacts
31+
* `package` compiles the code and produces benchmark JARs
3232
* -DskipTests speeds up the build since unit tests aren’t needed for benchmarking
3333

34-
After building, the compiled **benchmarks.jar** files appear under:
34+
After building, the compiled benchmarks.jar files appear under:
3535

3636
```output
3737
flink-benchmarks/target/
3838
```
3939

40-
### Explore the JAR Contents
40+
## Explore the JAR contents
4141
Verify that benchmarks.jar was generated:
4242

4343
```console
4444
cd target
4545
ls
4646
```
47-
You should see:
47+
48+
The output is similar to:
4849

4950
```output
5051
benchmark-0.1.jar classes generated-test-sources maven-status protoc-plugins
5152
benchmarks.jar generated-sources maven-archiver protoc-dependencies test-classes
5253
```
53-
benchmarks.jar — Contains all Flink microbenchmarks packaged with JMH.
5454

55-
### List Available Benchmarks
55+
`benchmarks.jar` contains all Flink microbenchmarks packaged with JMH.
56+
57+
## List available benchmarks
5658
View all benchmarks included in the JAR:
5759

5860
```console
@@ -61,16 +63,18 @@ java -jar benchmarks.jar -l
6163
- `-l` → Lists all benchmarks packaged in the JAR.
6264
- This helps you identify which benchmarks you want to execute on your VM.
6365

64-
### Run Selected Benchmarks
66+
## Run the Remote Channel Throughput benchmark
6567
While the Flink benchmarking project includes multiple suites for state backends, windowing, checkpointing, and scheduler performance, in this Learning path you will run the Remote Channel Throughput benchmark to evaluate network and I/O performance.
6668

67-
**Remote Channel Throughput**: This benchmark measures the data transfer rate between remote channels in Flink, helping to evaluate network and I/O performance.
69+
Remote Channel Throughput: This benchmark measures the data transfer rate between remote channels in Flink, helping to evaluate network and I/O performance.
6870

6971
Run the benchmark:
7072
```console
7173
java -jar benchmarks.jar org.apache.flink.benchmark.RemoteChannelThroughputBenchmark.remoteRebalance
7274
```
73-
You should see output similar to:
75+
76+
The output is similar to:
77+
7478
```output
7579
7680
Result "org.apache.flink.benchmark.RemoteChannelThroughputBenchmark.remoteRebalance":
@@ -84,26 +88,28 @@ RemoteChannelThroughputBenchmark.remoteRebalance ALIGNED thrpt 30 17445.341
8488
RemoteChannelThroughputBenchmark.remoteRebalance DEBLOAT thrpt 30 10536.511 ± 60.121 ops/ms
8589
```
8690

87-
### Flink Benchmark Metrics Explained
91+
## Understand benchmark metrics
92+
93+
The output from the Remote Channel Throughput benchmark includes several statistical measures that help you interpret Flink's performance on Arm64. Understanding these metrics enables you to assess both the average performance and the consistency of results across multiple iterations.
8894

89-
- **Run Count**: Total benchmark iterations executed, higher count improves reliability.
90-
- **Average Throughput**: Mean operations per second across all iterations.
91-
- **Standard Deviation**: Variation from average throughput, smaller means more consistent.
92-
- **Confidence Interval (99.9%)**: Range where the true average throughput lies with 99.9% certainty.
93-
- **Min Throughput**: The lowest throughput was observed, and it shows worst-case performance.
94-
- **Max Throughput**: Highest throughput observed, shows best-case performance.
95+
- Run Count: total benchmark iterations executed, higher count improves reliability.
96+
- Average Throughput: mean operations per second across all iterations.
97+
- Standard Deviation: variation from average throughput, smaller means more consistent.
98+
- Confidence Interval (99.9%): range where the true average throughput lies with 99.9% certainty.
99+
- Min Throughput: the lowest throughput was observed, and it shows worst-case performance.
100+
- Max Throughput: highest throughput observed, shows best-case performance.
95101

96-
### Benchmark summary on Arm64
102+
## Benchmark summary for Arm64
97103
Results from the run on the `c4a-standard-4` (4 vCPU, 16 GB memory) Arm64 VM in GCP (SUSE) are summarized below:
98104

99105
| Benchmark | Mode | Count | Score (ops/ms) | Error (±) | Min | Max | Stdev | CI (99.9%) | Units |
100106
|---------------------------------------------------|---------|-------|----------------|-----------|-----------|-----------|---------|------------------------|--------|
101107
| RemoteChannelThroughputBenchmark.remoteRebalance | ALIGNED | 30 | 17445.341 | 153.256 | 10289.593 | 10687.736 | 89.987 | [10476.390, 10596.633] | ops/ms |
102108
| RemoteChannelThroughputBenchmark.remoteRebalance | DEBLOAT | 30 | 10536.511 | 60.121 | 10289.593 | 10687.736 | 89.987 | [10476.390, 10596.633] | ops/ms |
103109

104-
### Apache Flink performance benchmarking observations on Arm64
110+
## What you've accomplished and what's next
105111

106-
- Both the ALIGNED mode and DEBLOAT modes demonstrate a strong throughput on the Arm64 VM.
107-
- The benchmark confirms that the Arm64 architecture efficiently handles Flink's remote channel throughput workloads.
112+
You've successfully deployed Apache Flink on a Google Axion C4A Arm-based virtual machine, validated its functionality, and measured its performance using JMH-based microbenchmarks.
113+
The benchmark results confirm that Google Axion C4A Arm-based instances deliver strong throughput in both ALIGNED and DEBLOAT modes, demonstrating that Arm64 architecture efficiently handles Flink's remote channel throughput workloads.
108114

109-
Overall, Arm64 VMs have shown that they are highly suitable for real-time Flink workloads, especially streaming analytics, ETL pipelines, and JVM-based microbenchmarks.
115+
Arm64 VMs are highly suitable for real-time Flink workloads, including streaming analytics, ETL pipelines, and JVM-based microbenchmarks. The consistent performance across different modes demonstrates that Arm-based infrastructure can effectively handle Flink's demanding real-time processing requirements.

0 commit comments

Comments
 (0)