Skip to content

Commit c128c29

Browse files
Update Cassandra learning path content
1 parent 8402585 commit c128c29

5 files changed

Lines changed: 78 additions & 73 deletions

File tree

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: 22 additions & 23 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
@@ -12,7 +12,7 @@ In this section you will perform baseline testing for Apache Flink after install
1212
### 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.
80+
81+
`StandaloneSessionClusterEntrypoint` is the JobManager process, and `TaskManagerRunner` is the worker responsible for executing tasks and maintaining state.
8282

8383
### Access the Flink Web UI
8484

85-
In a browser, navigate to:
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: 30 additions & 26 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,14 +88,14 @@ 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
8892

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.
93+
- Run Count: total benchmark iterations executed, higher count improves reliability.
94+
- Average Throughput: mean operations per second across all iterations.
95+
- Standard Deviation: variation from average throughput, smaller means more consistent.
96+
- Confidence Interval (99.9%): range where the true average throughput lies with 99.9% certainty.
97+
- Min Throughput: the lowest throughput was observed, and it shows worst-case performance.
98+
- Max Throughput: highest throughput observed, shows best-case performance.
9599

96100
### Benchmark summary on Arm64
97101
Results from the run on the `c4a-standard-4` (4 vCPU, 16 GB memory) Arm64 VM in GCP (SUSE) are summarized below:
@@ -101,9 +105,9 @@ Results from the run on the `c4a-standard-4` (4 vCPU, 16 GB memory) Arm64 VM in
101105
| RemoteChannelThroughputBenchmark.remoteRebalance | ALIGNED | 30 | 17445.341 | 153.256 | 10289.593 | 10687.736 | 89.987 | [10476.390, 10596.633] | ops/ms |
102106
| RemoteChannelThroughputBenchmark.remoteRebalance | DEBLOAT | 30 | 10536.511 | 60.121 | 10289.593 | 10687.736 | 89.987 | [10476.390, 10596.633] | ops/ms |
103107

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

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.
110+
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.
111+
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.
108112

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

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

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@ weight: 4
66
layout: learningpathall
77
---
88

9-
## Install Apache Flink on GCP VM
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.
9+
## Install Apache Flink
10+
11+
This section shows you how to install Apache Flink and its required dependencies on a Google Cloud Platform (GCP) SUSE Arm64 virtual machine.
12+
13+
### Update the system and install Java
1114

12-
### Update the System and Install Java
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
@@ -29,13 +29,12 @@ sudo wget https://dlcdn.apache.org/flink/flink-2.1.1/flink-2.1.1-bin-scala_2.12.
2929
This command retrieves the official Flink binary distribution for installation on your VM.
3030

3131
{{% notice Note %}}
32-
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.
33-
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/)
32+
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. See [the Flink 2.0.0 Release Note](https://flink.apache.org/2025/03/24/apache-flink-2.0.0-a-new-era-of-real-time-data-processing/).
3433

3534
For best performance on Arm, the [Arm Ecosystem Dashboard](https://developer.arm.com/ecosystem-dashboard/) recommends using Flink ≥ 2.0.0.
3635
{{% /notice %}}
3736

38-
### Extract the Downloaded Archive
37+
### Extract the archive
3938
Untar the archive:
4039

4140
```console
@@ -49,14 +48,16 @@ sudo mv flink-2.1.1 /opt/flink
4948
```
5049
This makes configuration, upgrades, and scripting easier for your Flink installation.
5150

52-
### Configure Environment Variables
51+
### Configure environment variables
5352
Add Flink to your shell environment:
5453

5554
```console
5655
echo "export FLINK_HOME=/opt/flink" >> ~/.bashrc
5756
echo "export PATH=\$FLINK_HOME/bin:\$PATH" >> ~/.bashrc
5857
```
58+
5959
Create a logging directory and assign proper permissions:
60+
6061
```console
6162
sudo mkdir -p /opt/flink/log
6263
sudo chown -R $(whoami):$(id -gn) /opt/flink/log
@@ -69,7 +70,7 @@ source ~/.bashrc
6970
```
7071
Adding Flink to the global PATH lets you use commands like `flink`, `start-cluster.sh`, and `taskmanager.sh` from any terminal.
7172

72-
### Verify the Installation
73+
### Verify the installation
7374
To confirm that Flink has been installed correctly, check its version:
7475

7576
```console
@@ -81,4 +82,5 @@ You should see an output similar to:
8182
```output
8283
Version: 2.1.1, Commit ID: 074f8c5
8384
```
84-
This confirms that Apache Flink has been installed and is ready for use.
85+
86+
Apache Flink is now installed and ready for use.
Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
title: Create a Google Axion C4A Arm virtual machine on GCP
2+
title: Create a Google Axion C4A Arm virtual machine
33
weight: 3
44

55
### FIXED, DO NOT MODIFY
@@ -8,13 +8,13 @@ layout: learningpathall
88

99
## Overview
1010

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.
11+
This section shows you how to 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 %}}
14-
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/).
14+
For support on GCP setup, see the Learning Path [Getting started with Google Cloud Platform](/learning-paths/servers-and-cloud-computing/csp/google/).
1515
{{% /notice %}}
1616

17-
## Provision a Google Axion C4A Arm VM in Google Cloud Console
17+
## Provision a Google Axion C4A Arm VM
1818

1919
To create a virtual machine based on the C4A instance type:
2020
- Navigate to the [Google Cloud Console](https://console.cloud.google.com/).
@@ -24,8 +24,8 @@ To create a virtual machine based on the C4A instance type:
2424
- Set **Series** to `C4A`.
2525
- Select `c4a-standard-4` for machine type.
2626

27-
![Create a Google Axion C4A Arm virtual machine in the Google Cloud Console with c4a-standard-4 selected alt-text#center](images/gcp-vm.png "Creating a Google Axion C4A Arm virtual machine in Google Cloud Console")
27+
![Screenshot of the Google Cloud Console showing the Compute Engine VM instance creation page with Machine configuration section expanded. The Series dropdown shows C4A selected, and the Machine type field displays c4a-standard-4 with specifications of 4 vCPUs and 16 GB memory visible alt-text#center](images/gcp-vm.png "Creating a Google Axion C4A Arm virtual machine in Google Cloud Console")
2828

29-
- Under **OS and Storage**, select **Change**, then choose an Arm64-based OS image. For this Learning Path, use **SUSE Linux Enterprise Server**. Pick the preferred version for your Operating System. Ensure you select the **Arm image** variant. Click **Select**.
29+
- Under **OS and Storage**, select **Change**, then choose an Arm64-based OS image. For this Learning Path, use **SUSE Linux Enterprise Server**. Pick the preferred version for your Operating System. Ensure you select the **Arm image** variant. Select **Select**.
3030
- Under **Networking**, enable **Allow HTTP traffic**.
31-
- Click **Create** to launch the instance.
31+
- Select **Create** to launch the instance.

0 commit comments

Comments
 (0)