Skip to content

Commit 6ab068b

Browse files
authored
Merge pull request #2602 from pareenaverma/content_review
Flink LP tech review
2 parents 693fea7 + 383cd2e commit 6ab068b

File tree

5 files changed

+61
-62
lines changed

5 files changed

+61
-62
lines changed

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ To learn more about Google Axion, refer to the [Introducing Google Axion Process
1616

1717
## 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

21-
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.
21+
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

23-
Flink is widely used for **real-time analytics**, **event-driven applications**, **data pipelines**, and **machine learning workloads**. It integrates seamlessly with popular systems such as **Apache Kafka**, **Hadoop**, and various **cloud storage services**.
23+
Flink is widely used for real-time analytics, event-driven applications, data pipelines, and machine learning workloads. It integrates seamlessly with popular systems such as Apache Kafka, Hadoop, and various cloud storage services.
2424

2525
To learn more, visit the [Apache Flink official website](https://flink.apache.org/) and explore the [documentation](https://nightlies.apache.org/flink/flink-docs-release-2.1/).

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

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,11 @@ layout: learningpathall
77
---
88

99
## Apache Flink Baseline Testing on GCP SUSE VM
10-
This guide explains how to perform **baseline testing** for Apache Flink after installation on a **GCP SUSE VM**. Baseline testing ensures that the Flink cluster is operational, the environment is correctly configured, and basic jobs run successfully.
10+
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.
11+
12+
### Install Maven (Required to Build and Run Flink Jobs)
13+
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.
1114

12-
### Download and Extract Maven
13-
Before running Flink jobs, ensure that **Java** and **Maven** are installed on your VM.
1415
Download Maven and extract it:
1516

1617
```console
@@ -20,8 +21,8 @@ sudo tar -xvzf apache-maven-3.8.6-bin.tar.gz
2021
sudo mv apache-maven-3.8.6 /opt/maven
2122
```
2223

23-
### Set Environment Variables
24-
Configure the environment so Maven commands are recognized system-wide:
24+
### Configure Environment Variables
25+
Configure the environment so Maven commands can be run system-wide:
2526

2627
```console
2728
echo "export M2_HOME=/opt/maven" >> ~/.bashrc
@@ -47,9 +48,9 @@ OS name: "linux", version: "5.14.21-150500.55.124-default", arch: "aarch64", fam
4748
At this point, both Java and Maven are installed and ready to use.
4849

4950
### Start the Flink Cluster
50-
Before proceeding to start the Flink cluster, you need to allow port 8081 from your GCP console.
51+
Before launching Flink, open port 8081 in the Google Cloud Firewall Rules so that the Web UI is reachable externally.
5152

52-
Start the Flink cluster using the provided startup script:
53+
Start the standalone Flink cluster using the provided startup script:
5354

5455
```console
5556
cd $FLINK_HOME
@@ -64,7 +65,7 @@ Starting standalonesession daemon on host lpprojectsusearm64.
6465
Starting taskexecutor daemon on host lpprojectsusearm64.
6566
```
6667

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

6970
```console
7071
jps
@@ -76,30 +77,29 @@ You should see output similar to:
7677
2621 Jps
7778
2559 TaskManagerRunner
7879
```
80+
StandaloneSessionClusterEntrypoint is the JobManager process
81+
TaskManagerRunner is the worker responsible for executing tasks and maintaining state.
7982

8083
### Access the Flink Web UI
8184

82-
Open the Flink Web UI in a browser:
85+
In a browser, navigate to:
8386

8487
```console
8588
http://<VM_IP>:8081
8689
```
87-
88-
- A successfully loaded dashboard confirms the cluster network and UI functionality.
89-
-This serves as the baseline for network and UI validation.
90-
90+
You should see the Flink Dashboard:
9191
![Flink Dashboard alt-text#center](images/flink-dashboard.png "Figure 1: Flink Dashboard")
9292

93+
A successfully loaded dashboard confirms the cluster network and UI functionality. This serves as the baseline for network and UI validation.
94+
9395
### Run a Simple Example Job
94-
Execute a sample streaming job to verify that Flink can run tasks correctly:
96+
A basic sanity test is to run the built-in WordCount example:
9597

9698
```console
9799
cd $FLINK_HOME
98100
./bin/flink run examples/streaming/WordCount.jar
99101
```
100-
101-
- Monitor the job in the Web UI or check console logs.
102-
- Confirm that the job completes successfully.
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.
103103

104104
![Flink Dashboard alt-text#center](images/wordcount.png "Figure 2: Word Count Job")
105105

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

Lines changed: 28 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -8,44 +8,52 @@ layout: learningpathall
88

99

1010
## Apache Flink Benchmarking
11-
This guide provides step-by-step instructions to set up and run **Apache Flink Benchmarks** on a **GCP SUSE VMs**. It covers cloning the repository, building the benchmarks, exploring the JAR, and listing available benchmarks.
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.
1212

1313
### Clone the Repository
14-
Start by cloning the official Flink benchmarks repository. This repository contains all the benchmark definitions and example jobs.
14+
Clone the official Flink microbenchmarks repository:
1515

1616
```console
1717
cd ~
1818
git clone https://github.com/apache/flink-benchmarks.git
1919
cd flink-benchmarks
2020
```
21+
This repository contains microbenchmarks built using JMH (Java Microbenchmark Harness), widely used for JVM-level performance testing.
2122

2223
### Build the Benchmarks with Maven
23-
Use Maven to compile the benchmarks and generate the benchmark JAR. Skip tests to save time.
24+
Compile the benchmarks and create the executable JAR:
2425

2526
```console
2627
mvn clean package -DskipTests
2728
```
28-
- **mvn clean package** → Cleans previous builds and packages the project.
29+
What this does:
30+
* clean removes previous build artifacts
31+
* package compiles the code and produces benchmark JARs
32+
* -DskipTests speeds up the build since unit tests aren’t needed for benchmarking
33+
34+
After building, the compiled **benchmarks.jar** files appear under:
2935

30-
After this step, the target directory will contain the compiled **benchmarks.jar**.
36+
```output
37+
flink-benchmarks/target/
38+
```
3139

3240
### Explore the JAR Contents
33-
Verify the generated files inside the `target` directory:
41+
Verify that benchmarks.jar was generated:
3442

3543
```console
3644
cd target
3745
ls
3846
```
39-
You should see an output similar to:
47+
You should see:
4048

4149
```output
4250
benchmark-0.1.jar classes generated-test-sources maven-status protoc-plugins
4351
benchmarks.jar generated-sources maven-archiver protoc-dependencies test-classes
4452
```
45-
- **benchmarks.jar**→ The main benchmark JAR file used to run Flink benchmarks.
53+
benchmarks.jar — Contains all Flink microbenchmarks packaged with JMH.
4654

4755
### List Available Benchmarks
48-
To view all the benchmarks included in the JAR:
56+
View all benchmarks included in the JAR:
4957

5058
```console
5159
java -jar benchmarks.jar -l
@@ -54,13 +62,15 @@ java -jar benchmarks.jar -l
5462
- This helps you identify which benchmarks you want to execute on your VM.
5563

5664
### Run Selected Benchmarks
57-
While the Flink benchmarking project includes multiple suites for state backends, windowing, checkpointing, and scheduler performance, this Learning path focuses on the Remote Channel Throughput benchmark to evaluate network and I/O performance.
65+
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.
66+
67+
**Remote Channel Throughput**: This benchmark measures the data transfer rate between remote channels in Flink, helping to evaluate network and I/O performance.
5868

59-
**Remote Channel Throughput**: Measures the data transfer rate between remote channels in Flink, helping to evaluate network and I/O performance.
69+
Run the benchmark:
6070
```console
6171
java -jar benchmarks.jar org.apache.flink.benchmark.RemoteChannelThroughputBenchmark.remoteRebalance
6272
```
63-
You should see an output similar to:
73+
You should see output similar to:
6474
```output
6575
6676
Result "org.apache.flink.benchmark.RemoteChannelThroughputBenchmark.remoteRebalance":
@@ -83,25 +93,17 @@ RemoteChannelThroughputBenchmark.remoteRebalance DEBLOAT thrpt 30 10536.511
8393
- **Min Throughput**: The lowest throughput was observed, and it shows worst-case performance.
8494
- **Max Throughput**: Highest throughput observed, shows best-case performance.
8595

86-
### Benchmark summary on x86_64
87-
To compare the benchmark results, the following results were collected by running the same benchmark on a `x86 - c4-standard-4` (4 vCPUs, 15 GB Memory) x86_64 VM in GCP, running SUSE:
88-
89-
| Benchmark | Mode | Count | Score (ops/ms) | Error (±) | Min | Max | Stdev | CI (99.9%) | Units |
90-
|---------------------------------------------------|---------|-------|----------------|-----------|------------|------------|---------|------------------------|--------|
91-
| RemoteChannelThroughputBenchmark.remoteRebalance | ALIGNED | 30 | 24873.046 | 892.673 | 11195.028 | 12425.761 | 421.057 | [11448.649, 12011.275] | ops/ms |
92-
| RemoteChannelThroughputBenchmark.remoteRebalance | DEBLOAT | 30 | 11729.962 | 281.313 | 11195.028 | 12425.761 | 421.057 | [11448.649, 12011.275] | ops/ms |
93-
9496
### Benchmark summary on Arm64
95-
Results from the earlier run on the `c4a-standard-4` (4 vCPU, 16 GB memory) Arm64 VM in GCP (SUSE):
97+
Results from the run on the `c4a-standard-4` (4 vCPU, 16 GB memory) Arm64 VM in GCP (SUSE) are summarized below:
9698

9799
| Benchmark | Mode | Count | Score (ops/ms) | Error (±) | Min | Max | Stdev | CI (99.9%) | Units |
98100
|---------------------------------------------------|---------|-------|----------------|-----------|-----------|-----------|---------|------------------------|--------|
99101
| RemoteChannelThroughputBenchmark.remoteRebalance | ALIGNED | 30 | 17445.341 | 153.256 | 10289.593 | 10687.736 | 89.987 | [10476.390, 10596.633] | ops/ms |
100102
| RemoteChannelThroughputBenchmark.remoteRebalance | DEBLOAT | 30 | 10536.511 | 60.121 | 10289.593 | 10687.736 | 89.987 | [10476.390, 10596.633] | ops/ms |
101103

102-
### Apache Flink performance benchmarking comparison on Arm64 and x86_64
104+
### Apache Flink performance benchmarking observations on Arm64
105+
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.
103108

104-
- The **ALIGNED mode** achieved an average throughput of **17,445 ops/ms**, demonstrating higher performance on the Arm64 VM.
105-
- The **DEBLOAT mode** achieved an average throughput of **10,537 ops/ms**, slightly lower due to optimization differences.
106-
- The benchmark confirms that the **Arm64 architecture** efficiently handles Flink's remote channel throughput workloads.
107-
- Overall, the average throughput across both modes is approximately **14,854 ops/ms**, indicating strong baseline performance for Arm64 deployments.
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.

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

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ layout: learningpathall
77
---
88

99
## Install Apache Flink on GCP VM
10-
This guide walks you through installing **Apache Flink** and its required dependencies on a **Google Cloud Platform (GCP) SUSE Arm64 Virtual Machine (VM)**. By the end of this section, you will have a fully configured Flink environment ready for job execution and benchmarking.
10+
In this section you will install Apache Flink and its required dependencies on a Google Cloud Platform (GCP) SUSE Arm64 Virtual Machine (VM). By the end, you will have a fully configured Flink environment ready for local execution, standalone clusters, or benchmarking Flink workloads on Arm.
1111

1212
### Update the System and Install Java
13-
Before installing Flink, ensure your system packages are up to date and Java is installed.
14-
13+
Apache Flink requires a Java runtime (JRE) and development kit (JDK).
14+
Update the system and install Java:
1515
```console
1616
sudo zypper refresh
1717
sudo zypper update -y
@@ -20,7 +20,7 @@ sudo zypper install -y java-17-openjdk java-17-openjdk-devel
2020
This step ensures you have the latest system updates and the Java runtime needed to execute Flink applications.
2121

2222
### Download Apache Flink Binary
23-
Next, download the pre-built binary package for **Apache Flink** from the official Apache mirror.
23+
Navigate to /opt (a standard location for system-wide tools) and download the official Flink distribution:
2424

2525
```console
2626
cd /opt
@@ -32,45 +32,42 @@ This command retrieves the official Flink binary distribution for installation o
3232
Flink 2.0.0 introduced Disaggregated State Management architecture, which enables more efficient resource utilization in cloud-native environments, ensuring high-performance real-time processing while minimizing resource overhead.
3333
You can view [this release note](https://flink.apache.org/2025/03/24/apache-flink-2.0.0-a-new-era-of-real-time-data-processing/)
3434

35-
The [Arm Ecosystem Dashboard](https://developer.arm.com/ecosystem-dashboard/) recommends Flink version 2.0.0, the minimum recommended on the Arm platforms.
35+
For best performance on Arm, the [Arm Ecosystem Dashboard](https://developer.arm.com/ecosystem-dashboard/) recommends using Flink 2.0.0.
3636
{{% /notice %}}
3737

3838
### Extract the Downloaded Archive
39-
Extract the downloaded `.tgz` archive to make the Flink files accessible for configuration.
39+
Untar the archive:
4040

4141
```console
4242
sudo tar -xvzf flink-2.1.1-bin-scala_2.12.tgz
4343
```
4444
After extraction, you will have a directory named `flink-2.1.1` under `/opt`.
4545

46-
**Rename the extracted directory for convenience:**
47-
For easier access and management, rename the extracted Flink directory to a simple name like `/opt/flink`.
48-
46+
Rename it for convenience:
4947
```console
5048
sudo mv flink-2.1.1 /opt/flink
5149
```
52-
This makes future references to your Flink installation path simpler and more consistent.
50+
This makes configuration, upgrades, and scripting easier for your Flink installation.
5351

5452
### Configure Environment Variables
55-
Set the environment variables so the Flink commands are recognized system-wide. This ensures you can run `flink` from any terminal session.
53+
Add Flink to your shell environment:
5654

5755
```console
5856
echo "export FLINK_HOME=/opt/flink" >> ~/.bashrc
5957
echo "export PATH=\$FLINK_HOME/bin:\$PATH" >> ~/.bashrc
6058
```
61-
62-
Additionally, create a dedicated log directory for Flink and assign proper permissions:
59+
Create a logging directory and assign proper permissions:
6360
```console
6461
sudo mkdir -p /opt/flink/log
6562
sudo chown -R $(whoami):$(id -gn) /opt/flink/log
6663
sudo chmod -R 755 /opt/flink/log
6764
```
68-
69-
**Apply the changes:**
65+
Apply the changes:
7066

7167
```console
7268
source ~/.bashrc
7369
```
70+
Adding Flink to the global PATH lets you use commands like `flink`, `start-cluster.sh`, and `taskmanager.sh` from any terminal.
7471

7572
### Verify the Installation
7673
To confirm that Flink has been installed correctly, check its version:

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ layout: learningpathall
88

99
## Overview
1010

11-
In this section, you will learn how to provision a Google Axion C4A Arm virtual machine on Google Cloud Platform (GCP) using the `c4a-standard-4` (4 vCPUs, 16 GB memory) machine type in the Google Cloud Console.
11+
In this section, you will create a Google Axion C4A Arm virtual machine on Google Cloud Platform (GCP) using the `c4a-standard-4` (4 vCPUs, 16 GB memory) machine type in the Google Cloud Console.
1212

1313
{{% notice Note %}}
1414
For support on GCP setup, see the Learning Path [Getting started with Google Cloud Platform](https://learn.arm.com/learning-paths/servers-and-cloud-computing/csp/google/).

0 commit comments

Comments
 (0)